- 最大公约数和最小公倍数问题
AC代码
- 2025-5-11 17:51:51 @
???
1 条评论
-
-
#include #include #include
using namespace std;
// 计算最大公约数 int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; }
// 计算满足条件的(P, Q)的个数 int countPairs(int x0, int y0) { if (y0 % x0 != 0) { return 0; } int k = y0 / x0; if (k == 1) { return 1; } // 计算k的不同质因数的个数 int count = 0; int temp = k; for (int i = 2; i * i <= temp; ++i) { if (temp % i == 0) { ++count; while (temp % i == 0) { temp /= i; } } } if (temp > 1) { ++count; } return 1 << count; // 2^count }
int main() { int x0, y0; cin >> x0 >> y0; cout << countPairs(x0, y0) << endl; return 0; }
- 1
信息
- ID
- 798
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 89
- 已通过
- 26
- 上传者