LA 4384

时间:2021-08-16 06:01:23

扩展欧几里得

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define maxn 3000009
#define ll long long
using namespace std; void gcd(ll a,ll b,ll& d,ll& x,ll &y)
{
if(!b){d=a;x=;y=;}
else {gcd(b,a%b,d,y,x);y-=x*(a/b);}
} bool check(ll a,ll b,ll n)
{
ll d,x,y;
gcd(a,b,d,x,y);
if(n%d)return ;
a/=d;b/=d;n/=d;
x*=n;y*=n;
if(x<){swap(x,y);swap(a,b);}
return y+a*(x/b)>=;
} bool yes(ll a,ll b,ll x,ll y)
{
if((x%a==&&y%b==)||(x%b==&&y%a==))
return ;
return ;
} int main()
{
int t;
ll a,b,x,y;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
if((x%a==&&x%b==&&check(a,b,y)||(y%a==&&y%b==&&check(a,b,x))||yes(a,b,x,y)))
puts("YES");
else puts("NO");
}
return ;
}