求幂的4种方法总结
1.常规求幂
ll pow(int a, int n) {
int s;
for (s = 1; n >= 1; n--)
s *= a;
return s;
}
2.二分求幂(一般)
ll pow(int a, int n) {
int s, base;
for (s = 1, base = n; n; n = n / 2) {
if (n % 2)
s *= a;
a *= a;
}
return s;
}
3.二分求幂(位操作,思路完全一样,速度应该比二分求幂的速度快一丢丢)
ll pow(int a, int n) {
int s, base;
for (s = 1, base = n; n; n >>= 1) {
if (n & 1)
s *= a;
a *= a;
}
return s;
}
4.快速求幂(比较难的一种)
ll pow(int a, int n) {
if (n == 0)
return 1;
else {
while (!(n & 1)) {
n >>= 1;
a *= a;
}
}
int result = a;
n >>= 1;
while (n) {
a *= a;
if (n & 1)
result *= a;
n >>= 1;
}
return result;
}
本文详细介绍了四种不同的求幂算法:常规求幂、二分求幂(两种不同实现方式)、快速求幂。每种方法都提供了具体的代码实现,并对算法的特点进行了简要说明。
180

被折叠的 条评论
为什么被折叠?



