ACGO的狗帮我做的
原题链接:7.Hankson 的趣味题2025-02-15 15:59:47
发布于:广东
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
// 求最大公约数
ll gcd(ll a, ll b) {
return b == 0 ? a : gcd(b, a % b);
}
// 求最小公倍数
ll lcm(ll a, ll b) {
return a / gcd(a, b) * b;
}
// 判断是否满足条件
bool check(ll x, ll a0, ll a1, ll b0, ll b1) {
if (gcd(x, a0) != a1) return false;
if (lcm(x, b0) != b1) return false;
return true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
    ll a0, a1, b0, b1;
    cin >> a0 >> a1 >> b0 >> b1;
    // 检查必要条件
    if (a0 % a1 != 0 || b1 % b0 != 0) {
        cout << 0 << '\n';
        continue;
    }
    int count = 0;
    // 枚举 b1 的所有因子
    for (ll d = 1; d * d <= b1; ++d) {
        if (b1 % d == 0) {
            if (check(d, a0, a1, b0, b1)) count++;
            if (d * d != b1 && check(b1 / d, a0, a1, b0, b1)) count++;
        }
    }
    cout << count << '\n';
}
return 0;
}
这里空空如也






有帮助,赞一个