利用次数的位运算二进制加速

 

 

 1 #include<stdio.h>
 2 #include<string.h>
 3 typedef long long ll;
 4 const int mod=1e9+7;
 5 
 6 ll QP(ll a,ll n){
 7     ll tmp=a,ans=1;
 8     while(n){
 9         if(n&1)ans=ans*tmp%mod;
10         tmp=tmp*tmp%mod;
11         n>>=1;
12     }
13     return ans;
14 }
15 
16 int main(){
17     ll a,n;
18     while(scanf("%lld%lld",&a,&n)!=EOF){
19         ll m=QP(a,n);
20         printf("%lld\n",m);
21     }
22     return 0;
23 }