写一份快速幂c++代码
时间: 2023-09-03 09:28:08 浏览: 138
C++编程题汇总450份1
### 回答1:
下面是一份快速幂次方算法的代码:int fastPow(int x, int n) {
if (n == 0) {
return 1;
}
int half = fastPow(x, n / 2);
if (n % 2 == 0) {
return half * half;
} else {
return half * half * x;
}
}
### 回答2:
快速幂是一种用于快速计算某个数的指数次幂的算法,它可以有效地减少计算次数,提高运算效率。下面是一个用C语言实现快速幂的示例代码:
```c
#include <stdio.h>
long long fastPower(int base, int exponent) {
long long result = 1;
while (exponent > 0) {
// 如果指数为奇数,则每次乘以base
if (exponent % 2 == 1) {
result *= base;
}
// 指数减半,底数变为底数的平方
base *= base;
exponent /= 2;
}
return result;
}
int main() {
int base, exponent;
printf("请输入底数: ");
scanf("%d", &base);
printf("请输入指数: ");
scanf("%d", &exponent);
long long result = fastPower(base, exponent);
printf("结果为: %lld\n", result);
return 0;
}
```
以上代码通过循环和位运算的方式实现了快速幂的算法。首先,定义一个函数`fastPower`,其中`base`为底数,`exponent`为指数。在函数中,通过循环判断指数是否为奇数,如果是则将结果乘以底数,同时将底数变为底数的平方,并将指数减半。当指数为0时,循环结束,返回最终结果。在`main`函数中,获取用户输入的底数和指数,并调用`fastPower`函数计算结果,最后输出结果。
### 回答3:
快速幂算法(Fast Power Algorithm)可以高效地计算一个数的幂。
下面是一份用C语言编写的快速幂代码:
```c
#include <stdio.h>
// 快速幂函数
long long fastPower(int base, int power) {
if (power == 0) {
return 1;
}
long long result = 1;
long long temp = base;
while (power) {
// 判断power的二进制最低位是否为1
if (power & 1) {
result *= temp;
}
temp *= temp; // 底数翻倍
power >>= 1; // 幂次减半
}
return result;
}
int main() {
int base, power;
printf("请输入底数:");
scanf("%d", &base);
printf("请输入幂数:");
scanf("%d", &power);
long long result = fastPower(base, power);
printf("%d的%d次方是%lld\n", base, power, result);
return 0;
}
```
代码中的`fastPower`函数使用了循环实现,通过将底数每次翻倍、幂次每次减半的方式,通过二进制的位运算来计算得到结果。这种方法的时间复杂度为O(log n),比传统的循环计算乘法的方法更高效。
在`main`函数中,通过用户输入获取底数和幂数,然后调用`fastPower`函数来计算底数的幂次。最后,将结果打印输出。
注意:代码中使用了`long long`类型来存储中间结果和最终结果,以防止溢出。
阅读全文