二分求幂,
非递归求法(二进制求法):
比如
2^5就是5个2相乘,按照5的二进制求
3^10就是8个3相乘,再2个3相乘。
处理幂的二进制,具体实现代码如下:
long long quickmulti(long long a,long long b)
{
long long res=1;
while(b)
{
if(b&1) //如果最后一位为1,则res*=a;
res*=a;
a*=a; //a*=a
b>>=1; //b%=2
}
return res;
}