快速幂
若求A的156次方,我们会发现A^156=A^128*A^16*A^8*A^4,
我们知道 A^2=A*A,A^4=A^2*A^2,以此类推,则我们可以对A一直进行乘方,将A^n中的n转换为二进制后,若有对应的1,则使ans乘上已经经过若干次平方的A.
如:156(10)=10011100(2),所以我们可以用一个按位与从左至右巧妙的求解;
代码:
while(n)
{
if(n&1)
ans*=A;
A*=A;
n/=2;
}
快速幂
若求A的156次方,我们会发现A^156=A^128*A^16*A^8*A^4,
我们知道 A^2=A*A,A^4=A^2*A^2,以此类推,则我们可以对A一直进行乘方,将A^n中的n转换为二进制后,若有对应的1,则使ans乘上已经经过若干次平方的A.
如:156(10)=10011100(2),所以我们可以用一个按位与从左至右巧妙的求解;
代码:
while(n)
{
if(n&1)
ans*=A;
A*=A;
n/=2;
}