本文共 909 字,大约阅读时间需要 3 分钟。
为了求解 a 的 b 次方对 p 取模的值,我们可以采用快速幂算法。这种方法通过将指数 b 分解为二进制形式,逐步处理每一位,利用模运算来优化计算过程,从而将时间复杂度降低到 O(log b)。以下是详细的步骤:
res 初始化为 1。这种方法确保了每一步的计算都是高效的,并且避免了数值溢出的问题。
#includeusing namespace std;int main() { int a, b, p; cin >> a >> b >> p; if (p == 1) { cout << 0 << endl; return 0; } int res = 1; while (b > 0) { if (b & 1) { res = (res * a) % p; } a = (a * a) % p; b >>= 1; } cout << res << endl; return 0;}
cin 读取输入的三个整数 a, b, p。res 初始化为1,用于存储最终的结果。while 循环处理 b 的每一位。b & 1 检查当前位是否为1,如果是则更新结果。这种方法高效且准确,能够在对数时间内完成计算,适用于大数幂取模的问题。
转载地址:http://qktkz.baihongyu.com/