2 条题解
-
-2
#include <iostream> using namespace std; // 计算最大公约数,用于判断两个数是否互质 long long gcd(long long a, long long b) { return b == 0? a : gcd(b, a % b); } // 快速幂取模函数,用于高效计算 (a^n) % m long long powMod(long long a, long long n, long long m) { long long res = 1; a %= m; while (n > 0) { if (n & 1) { // 如果n的二进制最低位为1,累乘当前的a res = res * a % m; } a = a * a % m; n >>= 1; // 右移一位,相当于n /= 2 } return res; } int main() { long long p, b, n; cin >> p >> b >> n; // 判断b与p是否互质,如果不互质直接输出 -1 if (gcd(b, p)!= 1) { cout << -1 << endl; return 0; } bool found = false; for (long long l = 1; l < p; l++) { if (powMod(b, l, p) == n) { cout << l << endl; found = true; break; } } if (!found) { cout << -1 << endl; } return 0; }
信息
- ID
- 61
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 202
- 已通过
- 7
- 上传者