如何计算快速幂,比如 x^100000000次方,直接循环很慢.

来源:学生作业帮助网 编辑:作业帮 时间:2024/06/04 09:04:11

如何计算快速幂,比如 x^100000000次方,直接循环很慢.
如何计算快速幂,比如 x^100000000次方,直接循环很慢.

如何计算快速幂,比如 x^100000000次方,直接循环很慢.
因为 x^n = (x^(n/2))^2
根据这个公式,可以在 log2N时间内算出乘法幂
递归算法:
int pow(int x,int n)
{
if(n==1) return x;
else if(n&1) //n is odd
{
return x*pow(x,n/2);
}
else
{
return pow(x,n/2);
}
}
非递归算法:
int pow(int x,int n)
{
int temp(x),res(1);
while(n)
{
if(n&1)
{
res *= temp;
}
temp *= temp;
n>>=1;
}
return res;
}

用计算器,作为人类,不得不会使用工具