使用 Python 三参数 pow 直接计算模意义下的快速幂。
OJ: luogu
题目 ID: P1226
难度:普及-
标签:数学快速幂python
日期: 2026-07-16 18:28
题意
计算
思路
快速幂把指数写成二进制,只使用
python
pow(a, b, modulus)三参数版本会在运算过程中持续取模,不会先构造可能极大的 a ** b。OJ 中应优先使用它,而不是写成 a ** b % modulus。
Python 知识
pow(base, exponent, modulus)是模快速幂,复杂度为。 - f-string 可以直接拼出题目要求的固定格式。
- Python 内置
pow由底层高效实现,模板题没有必要手写循环来代替它。
代码
python
a, b, modulus = map(int, input().split())
print(f"{a}^{b} mod {modulus}={pow(a, b, modulus)}")原有手写 C++ 快速幂仍可用于理解二进制拆分:
cpp
#include <bits/stdc++.h>
using namespace std;
long long a, b, p;
long long fast_power(long long base, long long exp, long long mod) {
long long ans = 1 % mod;
base %= mod;
while (exp > 0) {
if (exp & 1) {
ans = ans * base % mod;
}
base = base * base % mod;
exp >>= 1;
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> a >> b >> p;
cout << a << "^" << b << " mod " << p << "=" << fast_power(a, b, p) << '\n';
return 0;
}复杂度
时间
总结
这题最能体现 Python 相对 C++ 的语言特性:三参数 pow 就是可直接提交的标准模快速幂。