top1编程
← 返回题目
题解

【基础】快速幂

1 条题解

  • 0
    @ 2026-7-29 0:15:06
    #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