题解
【基础】快速幂
1 条题解
-
0
#include <iostream> using namespace std; // 分治法实现快速幂取模:计算 (x^p) % m long long fast_pow_mod(long long x, long long p, long long m) { // 递归终止条件:指数为0时,任何数的0次方都是1(1%m=1) if (p == 0) { return 1 % m; } // 先计算 x² mod m,减少后续计算量 long long temp = (x * x) % m; // 分治:计算 (x²)^(p//2) mod m long long res = fast_pow_mod(temp, p / 2, m); // 根据p的奇偶性调整结果 if (p % 2 == 1) { // 奇数:多乘一个x,再取模 res = (res * x) % m; } return res; } int main() { int x, p, m; cin >> x >> p >> m; // 调用快速幂函数,输出结果 cout << fast_pow_mod(x, p, m) << endl; return 0; }
- 1