int power(int b,int e)
{
if(e==0)
return 1;
if(e%2==0)
return power(b*b,e/2);
return b*power(b*b,e/2);
}
//快速幂的实现程序,可以理解为幂数被转换为二进制形式,然后对位为1的逐位乘上去。
//例如2^5将5转换成二进制101,2^1*2^4简单点的实现方式可以这样:
int power(int b,int e)
{
int answer=1;
while(e>0)
{
if(e%2==1)
answer*=b;
b=b*b;//随着位数往左移,b的幂数不断翻倍
e/=2;
}
return answer;
}
//常规求幂
int pow1(inta,intb)
{
int r=1;
while(b--)
r*=a;
return r;
}
//二分求幂(一般)
int pow2(inta,intb)
{
int r=1;
int base=a;
while(b!=0)
{
if(b%2)
r*=base;
base*=base;
b/=2;
}
return r;
}
//二分求幂(位操作,同pow2)
int pow3(int a,int b)
{
int r=1;
int base=a;
while(b!=0)
{
if(b&1)
r*=base;
base*=base;
b>>=1;
}
return r;
}
//快速求幂(位运算,更复杂)
int pow4(int x,int n)
{
if(n==0)
return 1;
else
while((n&1)==0)
{
n>>=1;
x*=x;
}
int result=x;
n>>=1;
while(n!=0)
{
x*=x;
if((n&1)!=0)
result*=x;
n>>=1;
}
return result;
}