1 条题解
-
0
题解文字教学
已知两个正整数 ,求满足 且 的正整数对 的个数。
利用性质:$\gcd(P,Q) \times \operatorname{lcm}(P,Q) = P \times Q$,可得 。
设 ,则要求 且 。
若 ,则无解,输出 。否则令 ,问题转化为求满足 且 的正整数 的个数。由于每一个 唯一确定 ,从而确定一对 ,因此统计这样的 的个数就是答案( 有序,枚举 已包含顺序)。实现时,只需枚举 的因子,对每个因子 判断其与对应因子 的 是否为 。若 ,则当 时会计入两对( 和 各一对),当 时计入一对。最终累加即得答案。时间复杂度 ,完全可行。
参考代码
#include <bits/stdc++.h> using namespace std; int gcd(int a, int b) { while (b) { int t = a % b; a = b; b = t; } return a; } int main() { int x, y; cin >> x >> y; if (y % x != 0) { cout << 0 << endl; return 0; } int s = y / x; int ans = 0; for (int i = 1; i * i <= s; ++i) { if (s % i == 0) { int j = s / i; if (gcd(i, j) == 1) { ans++; if (i != j) ans++; } } } cout << ans << endl; return 0; }
- 1
信息
- ID
- 29
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 9
- 已通过
- 5
- 上传者
京公网安备 11011102002149号