2 条题解
-
1
题前吐槽:Hanks是不是BT邻域? 正文:
因为:
**(a0,x)=a1,[b0,x]=b1→x∣b**1
所以我们只要找所有b1的因数,一个个check即可。
#include <bits/stdc++> #define __lcm(a,b) ((long long)a * b / __gcd(a, b)) using namespace std; int T, a0, b0, a1, b1; int count() { int ans = 0; for (int i = 1; i <= sqrt(b1); i++) if (b1 % i == 0) { if (__lcm(i, b0) == b1 && __gcd(i, a0) == a1) ans++; if (b1 != i * i) if (__lcm(b1 / i, b0) == b1 && __gcd(b1 / i, a0) == a1) ans++; } return ans; } int main() { cin >> T; while (T--) { cin >> a0 >> a1 >> b0 >> b1; printf("%d\n",count()); } return 0; }
-
1
因为:
(a0,x)=a1,[b0,x]=b1→x∣b1
所以我们只要找所有b1的因数,一个个check即可。
AC代码
#include <bits/stdc++.h> #define __lcm(a,b) ((long long)a * b / __gcd(a, b)) using namespace std; int T, a0, b0, a1, b1; int count() { int ans = 0; for (int i = 1; i <= sqrt(b1); i++) if (b1 % i == 0) { if (__lcm(i, b0) == b1 && __gcd(i, a0) == a1) ans++; if (b1 != i * i) if (__lcm(b1 / i, b0) == b1 && __gcd(b1 / i, a0) == a1) ans++; } return ans; } int main() { cin >> T; while (T--) { cin >> a0 >> a1 >> b0 >> b1; printf("%d\n",count()); } return 0; }
- 1
信息
- ID
- 1649
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 133
- 已通过
- 43
- 上传者