题目链接:传送门
分析题目要求,,
也就是说是的因子,是的因子
直接枚举(也就是的因子),另外一个就是
然后满足上面两个条件的就,注意判断和相等的情况
毫无技术含量
#include <bits/stdc++.h>
int gcd(int a, int b) {return !b ? a : gcd(b, a % b);}
int lcm(int a, int b) {return a / gcd(a, b) * b;}
int main(int argc, char const *argv[]) {
int T, a0, a1, b0, b1; std::cin >> T;
while (T--) {
scanf("%d%d%d%d", &a0, &a1, &b0, &b1);
int kn = sqrt(1.0 * b1), ans = 0;
for (int i = 1; i <= kn; i++)
if (b1 % i == 0) {
if (gcd(i, a0) == a1 and lcm(i, b0) == b1) ans++;
if (i != b1 / i and gcd(b1 / i, a0) == a1 and lcm(b1 / i, b0) == b1) ans++;
}
printf("%d\n", ans);
}
return 0;
}