目录
快速幂核心思想
快速幂模板代码
快速幂取模模板(大数必备)
实战演练(LeetCode真题)
快速幂核心思想
二进制分解 + 分治思想:
a^13 = a^(8+4+1) = a^8 * a^4 * a^1 通过不断平方分解指数: a → a² → a⁴ → a⁸ → ...动态演示:
指数b=13的二进制:1101 计算路径: a^1 → (a^1)² → a^2 → (a^2)² → a^4 → (a^4)² → a^8 最终结果 = a^8 * a^4 * a^1
ll fast_pow(ll a, ll b) {
ll res = 1;
while(b > 0) {
if(b & 1) res *= a; // 当前二进制位为1时累乘
a *= a; // 平方倍增基数
b >>= 1; // 右移处理下一位
}
return res;
}
解决溢出问题:(a^b) % mod
ll mod_pow(ll a, ll b, ll mod) {
ll res = 1;
a %= mod; // 关键!先取模防溢出
while(b > 0) {
if(b & 1) res = (res * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return res;
}
50. Pow(x, n):直接套用模板
372. 超级次方:快速幂 + 逐位处理
1137. 第N个泰波那契数:矩阵快速幂
掌握这个模板,LeetCode所有幂运算题10行代码搞定!