专栏文章
快速幂
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqgh675
- 此快照首次捕获于
- 2025/12/04 04:24 3 个月前
- 此快照最后确认于
- 2025/12/04 04:24 3 个月前
1.计算幂
- 通常的方法是写一个函数或调用 函数
#include <bits/stdc++.h>
using namespace std;
void faction(int n, int power) {
int ans = 1;
for (int i = 1; i <= power; i ++) ans *= n;
printf("%d", ans);
}
int main() {
int A, B scanf("%d %d", &A, &B);
faction(A, B); //pow(A, B);
return 0;
}
2.快速幂引入
它是一种常见的方法,它可以将指数进行折半处理,因此它的时间复杂度为 .
3.快速幂
核心:利用二进制进行快速运算
例如 中 , 10 进制的 15 转为二进制为 1111(2).
即
运用初中数学知识得到:
∵
∴ 这三项有关
有发现它正好是 1110(2) 非零位的项,只需要将它们累加起来就好。最后发现了这个式子:
所以代码就出来了
CPP#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll faction(int a, int b)
{
ll ans = 1;
while (b > 0)
{
if (b & 1) ans *= a;
a *= a;
b >>= 1;
}
printf("%lld", ans);
}
int main() {
ll a, b; scanf("%lld %lld", &a, &b);
faction(a, b);
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...