本文已参与「新人创作礼」活动,一起开启掘金创作之路。
传送门
题意:
给你a0,a1,b0,b1,问你。
思路:
先看这个式子,x可以被拆分为数个质数,a0同理,那么它俩的gcd就应该为公共质因数的乘积,也就是说和没有公共质因数,即,至此,我们找到了x要满足的第一个条件:
紧接着来看第二个式子,同理,我们也可以得出:,于是得到了约束x的第二个条件:
然后在。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
int t;
cin>>t;
while(t--)
{
int a0,a1,b0,b1;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
int a = a0/a1,b = b1/b0;
int ans = 0;
int x = 1;
while(x*x <= b1)
{
if(x%a1 == 0 && b1%x == 0)
if(__gcd(x/a1,a0/a1) == 1 && __gcd(b1/x,b1/b0) == 1)
ans++;
if(b1%x == 0)
{
int k = b1/x;
if(k%a1 == 0 && b1%k == 0 && x != k)
if(__gcd(k/a1,a0/a1) == 1 && __gcd(b1/k,b1/b0) == 1)
ans++;
}
x++;
}
cout<<ans<<endl;
}
}