fork download
  1. #include<bits/stdc++.h>
  2. #include<boost/multiprecision/cpp_int.hpp>
  3. namespace mp=boost::multiprecision;
  4. using namespace mp;
  5. using namespace std;
  6. const int mod=1000000007;
  7. int cal(int a,cpp_int b){
  8. long long x=1,y=a;
  9. while(b){
  10. if(b&1)x=x*y;
  11. if(x>=mod)x=x-(x/mod)*mod;
  12. y=y*y;
  13. if(y>=mod)y=y-(y/mod)*mod;
  14. //same like b/2
  15. b>>=1;
  16. }
  17. return x;
  18. }
  19. int main(){
  20. int t;
  21. cpp_int n,k;
  22. long long ans,a1;
  23. for(scanf("%d",&t);t--;){
  24. cin>>n>>k;
  25. k--;
  26. if(k>=mod)k%=mod;
  27. ans=(long long)k;
  28. if(n&1)ans=ans*(-1);
  29. a1=cal((int)k,n);
  30. printf("%lld\n",(a1+ans+mod)%mod);
  31. }
  32. }
Success #stdin #stdout 0s 4392KB
stdin
3
100 1000000009
1000000009 1000000010
100000001012 233800001043
stdout
2
6
204981448