本文共 1044 字,大约阅读时间需要 3 分钟。
十倍快速幂思想可以帮助我们高效地计算大基数的幂取模,这在处理大指数问题时非常有用。下面是详细的说明和代码实现。
给定三个整数 b, p, k,计算公式为 b^p mod k 的值。
输入一行,包含三个整数,分别是 b, p, k。
输出字符串,格式为 “b^p mod k= result”,其中 result 是运算结果。
2 10 9
2^10 mod 9=7
为了高效计算大数的幂取模,可以采用快速幂(十倍快速幂)算法,这种方法将指数拆解为二进制形式,以便在每次迭代中减少计算量。具体步骤如下:
这种方法通过每次减少指数的二进制位数,使得幂取模运算的时间复杂度从 O(p) 降低到 O(log p),极大提高了计算效率。
#includeusing namespace std;typedef long long ll;ll qpow(ll a, ll b, ll p) { ll ret = 1; while (b) { if (b & 1) ret = (ret * a) % p; a = (a * a) % p; b >>= 1; } return ret;}int main() { ll a, b, c; ll d, e, f; cin >> a >> b >> c; d = a, e = b, f = c; ll ans = qpow(a, b, c); cout << d << '^' << e << ' mod ' << f << '=' << ans << endl; return 0;}
qpow 函数:
ret
为1。main 函数:
这种方法通过快速幂减少了计算量,适用于处理大指数取模问题,保证了效率和准确性。
转载地址:http://yiziz.baihongyu.com/