作用是幂函数x^n,不同于pow()函数,快速幂将时间压缩至一半,并且可以自定义数据类型。
快速幂基于二进制实现例如:
7^105(d)=7^1*7^8*7^32*7^64=7^(1+8+32+64) 其幂为105(d)=1101001(b)=2^0*1+2^3*1+2^5*1+2^6*1=1+8+32+64=105
int qmi(int x, int n)
{
int r = 1;
while (n)//过每一位
{
if (n & 1)//如果二进制位为1则×
r *= x;
x *= x;//每次都自乘
n /= 2;//每次都向左移位
}
return r;
}
如果n小于零,只需要把x=1÷x即可