生成一个快速幂函数c++
时间: 2024-10-20 13:05:21 浏览: 17
快速求幂和取余 C++
快速幂(Fast Exponentiation),也称为二分幂法,是一种用于高效计算大数次方的算法。在C++中,我们可以使用递归或循环来实现。下面是使用迭代方法的快速幂函数示例:
```cpp
#include <iostream>
// 定义快速幂函数
long long fastPow(long long base, unsigned long long exponent) {
long long result = 1;
while (exponent > 0) {
// 如果指数是奇数,则将结果乘以base
if (exponent & 1) {
result *= base;
}
// 将基数平方并右移一位,将指数除以2
base *= base;
exponent >>= 1; // 或者 exponent /= 2
}
return result;
}
int main() {
long long base = 2;
unsigned long long exponent = 1000000007; // 例如,一个大的模数
long long result = fastPow(base, exponent);
std::cout << "Result: " << result << std::endl;
return 0;
}
```
在这个例子中,我们先初始化结果为1,然后通过不断将指数除以2并将结果相应地更新,直到指数变为0。如果当前指数是奇数,我们就将结果乘以当前的基数。这样,我们只需要对基数进行O(log n)次乘法,而不是n次。
阅读全文