快速幂求a的b次方,将b转化为二进制相加形式,例3的11次方:转化为3^(2^3+2^1+2^0)
int cifang(int a,int b)
{
int base=a;
int ans=1;
while(b!=0)
{
if(b&1)
{
ans*=base;
}
base*=base;
b=b>>1;
}
return ans;
}
求2的m*n次方,m和n都是很高的数量级,直接求肯定不行,那就分两次快速幂来求
int ans=cifang(2,m);
ans=cifang(ans,n);