一·快速幂
求(a^b)%n 的结果;
- 递归
int quickPow(int a,int b,int n)
{
if(b==1) return a;
if(b%2==0) {// b 为偶数
int t=quickPow(a,b/2,n);
return t*t%n;
}else{// 为奇数
int t=quickPow(a,b/2,n);
t=t*t%n;
t=t*a%n;
return n;
}
return t;
}
2.非递归
int quickPow(int a,int b,int n)
{
int res=1;
while(b){
if(b%2!=0) res=res*a%n;
a=a*a;
b/=2;
}
return res;
}