基础的快速幂算法,要算a^b,可将b看成二进制,
举例: a^20,当b = 20时,二进制为 10100,b = (2^2)+(2^4)。利用&来判断最后一位是1或0(奇数或偶数),>>将b右移。
代码:
int res = 1;
while(b) //b不为0
{
if(b & 1) //最后一位为1
res = res * a;
a = a * a; // 上次的a进行平方
b >>= 1; // 右移一位
}
return res;
一般都要取个模防止爆int,或者用long long。