https://www.luogu.org/problem/P1072
我的做法:
试除法+void玄学优化。。
试除法
#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*b/gcd(a,b);
}
int main(void)
{
ll n,a0,a1,b0,b1;
scanf("%lld",&n);
while(n--)
{
ll ans=0;
scanf("%lld%lld%lld%lld",&a0,&a1,&b0,&b1);
for(ll i=1;i<=sqrt(b1);i++)
{
if(b1%i==0)
{
if(gcd(i,a0)==a1&&lcm(i,b0)==b1) ans++;
if(i*i!=b1) if(gcd(b1/i,a0)==a1&&lcm(b1/i,b0)==b1) ans++;
}
}
printf("%lld\n",ans);
}
}