作用:优化普通求幂算法的时间,空间复杂度,由一个O(n)优化到O(logn)。
算法:
1. (a*b)%c=(a%c)*(b%c)
2. 例如:1003的2进制是1111101011 ,
说明:此算法不可算负次方的情况,负数幂可用,记得边算边取模。
代码
int fpow(int a,int n,int mod) //输入参数 { int Ans=1; a=a%mod; while(n!=0) { if(n&1) //判断最后一位是否为0 Ans=(Ans*a)%mod; n>>=1; //位运算,删除二进制下的最后一位 a=a*a%mod; //每次平方倍后取模 } return Ans; //返回结果 }