快速幂运算 位运算+普通快速幂:
#include<stdio.h>
long long POWER(long long a,long long n)
{
long long result;
if(n==0)
return 1;
while(!(n&1))
{
n>>=1;
a*=a;
}
n>>=1;
result=a;
while(n!=0)
{
a*=a;
if(n&1)
result*=a;
n>>=1;
}
return result;
}
long long power(long long a,long long n)
{
long long c;
if(n==0)
return 1;
if(n==1)
return a;
else
{
c=power(a,n/2);
if(n%2)
return c*c*a;
else
return c*c;
}
}
int main(void)
{
long long a,n;
scanf("%lld%lld",&a,&n);
printf("%lld",POWER(a,n));
printf("\n%lld",power(a,n));
return 0;
}