可以用树形结构或分治将O(n)优化到O(logn)
int QuickPow(int a,int b,int n)
{
if(b==1) return a;
if(b%2==0)
{
int t=QuickPow(a,b/2,b);
return t*t%n;
}
else
{
int t=QuickPow(a,b/2,n);
t=t*t%n;
t=t*a%n;
return t;
}
}
非递归实现
int QuickPow(int a,int b,int n)
{
int tey=1;
while(b)
{
if(b%2==1)
ret=ret*a%n;
a=a*a%n;
b=b/2;
}
return ret;
}