题解
2024-11-16 11:59:49
发布于:浙江
5阅读
0回复
0点赞
#include <iostream>
#include <cmath>
using namespace std;
long long mod(long long a, long long b, long long p) {
long long result = 1;
a = a % p;
while (b > 0) {
if (b & 1) {
result = (result * a) % p;
}
b = b >> 1;
a = (a * a) % p;
}
return result;
}
int main() {
long long a, b, p;
cin >> a >> b >> p;
long long result = mod(a, b, p);
cout << a << "^" << b << " mod " << p << "=" << result << endl;
return 0;
}
cpp代码解释1. 快速幂取模函数 mod:•这个函数使用了快速幂算法,可以在对数时间内计算 ( a^b \mod p )。•a = a % p 为了防止 a 太大,先取模。•使用位运算来判断 b 是否为奇数,并进行相应的乘法和取模操作。•每次将 b 右移一位(相当于除以 2),并将 a 平方后取模。2. 主函数 main:•从标准输入读取三个整数 a, b, p。•调用 mod 函数计算 ( a^b \mod p ) 的结果。•输出结果,格式为 a^b mod p=result。示例运行对于输入 2 10 9,程序的输出将是:2^10 mod 9=7
这里空空如也
有帮助,赞一个