快速幂就是快速求解底数的 n次幂
不断分解次幂到达减少算法复杂度,在分解的过程中要考虑到次幂的奇偶性 列如:
(a)^12 =((a)^2)6=(((a)^2)^2)^3
(a)^9=a*(a)^8=a*((a)^2)^4=a*(((a)^2)^2)^2
int pow (int a,int n)
{
int base;
while(n>0)
{
if(n%2==1)
base*=a;
a*=a;
n/=2;
}
return base;
}
通过这个就可以求解快速取模,比如快速求解对10取模:
int pow (int a,int n)
{
int base;
while(n>0)
{
if(n%2==1)
base=(a*base)%10;
a=(a*a)%10;
n/=2;
}
return base;
}