快速幂
概念讲解
什么是快速幂?
快速幂是快速计算 的算法,时间复杂度 。
核心思想
将指数用二进制表示:
实现
迭代实现
123456789long long quickPower(long long a, long long n) {
long long result = 1;
while (n > 0) {
if (n & 1) result *= a;
a *= a;
n >>= 1;
}
return result;
}取模快速幂
12345678910long long quickPowerMod(long long a, long long n, long long mod) {
long long result = 1;
a %= mod;
while (n > 0) {
if (n & 1) result = result * a % mod;
a = a * a % mod;
n >>= 1;
}
return result;
}考点分析
初赛考查方式
- 选择题: 快速幂原理
- 程序阅读: 快速幂程序
- 编程题: 大数幂运算
常见考点
- 快速幂原理
- 取模运算
- 时间复杂度
例题精讲
例题 1:快速幂
题目: 求 。
解答:
10 = 1010₂
2^10 = 2^8 * 2^2 = 256 * 4 = 1024例题 2:取模快速幂
题目: 求 。
解答:
,
练习题
- 快速幂的时间复杂度是多少?
查看答案
每次将指数减半,所以只需要 次操作。
- 为什么要取模?
查看答案
取模的原因:
- 防止溢出: 可能非常大,超出 long long 范围
- 题目要求:很多题目要求对结果取模
- 数学性质:
- 快速幂的核心思想是什么?
查看答案
二进制拆分
将指数 n 用二进制表示,例如 :
通过不断将底数平方,同时检查指数的每一位,实现 的计算。
易错点
⚠️ 注意:
- 快速幂是 O(log n)
- 取模可以防止溢出
- a^0 = 1
- 注意底数也要取模