TLE了一个点 为啥啊
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
inline ll lcm(int a, int b)
{
return 1ll * a / gcd(a, b) * b;
}
int a0, a1, b0, b1;
inline bool chk(ll x)
{
return gcd(a0, x) == a1 && lcm(b0, x) == b1;
}
int main()
{
int n;
scanf("%d", &n);
while(n--)
{
scanf("%d%d%d%d", &a0, &a1, &b0, &b1);
int cnt = 0;
for(ll x = 1;x <= b1 / x;++x)
{
if(b1 % x == 0)
{
if(chk(x))
cnt++;
if(b1 / x != x && chk(b1 / x))
cnt++;
}
}
printf("%d\n", cnt);
}
return 0;
}