如题:
求a的b次方对p取模的值;1<=a,b,p<=10^9
我们可以表示b在二进制下有:
b= B1*2^0+ B2*2^1+B3*2^2+...+B*2^n
所以
a^b=a^(B1*1+ B2*2+B3*4+...+B*2^n)
所以有代码:
int power(int a,int b,int p)
{
int ans=1%p;
for(;b;b>>=1)
{
if(b&1)ans=(long long )ans*a%p;
a=(long long )a*a%p;
}
return ans;
}