[HAOI2011]向量
因为(a,b)与(-a,-b)完全相反,只能择其一。
所以只有这几种运算(a,b)(a,-b)(b,a)(b,-a)
(-a,-b)(-a,b)(-b,a)(b,a)[当然,题目中讲了。。。。]
把他们组合起来,就只有这四种运算
xi或yi +/-2*a;
xi或yi +/-2*b;
xi+a, yi+b
xi+b, yi+a
(xi,yi从0往上加,加到x,y
就不存在-a,-b-b,-a这两种情
况了,同时,通过观察可得,
第3、4种运算,至多运行一次,
因为运行两次,就会变成第1、
2种运算。)
//MADE BY BOBOYANG
#include <cstdio>
long long scaff()
{
long long number=0;
int f=1;
char ch;
ch=getchar();
if(ch=='-'){f=-1;ch=getchar();}
while(ch<'0'||ch>'9')
ch=getchar();
while(ch>='0'&&ch<='9')
{
number=(number<<1)+(number<<3)+ch-'0';
ch=getchar();
}
return number*f;
}
long long a,b,x,y;
long long d;
long long t;
long long gcd(long long a2,long long b2)
{return b2==0?a2:gcd(b2,a2%b2);}
bool iamsosad(long long ai,long long bi,long long xi,long long yi)
{
d=gcd(ai*2,bi*2);
if(xi%d==0&&yi%d==0)return 1;
if((xi+ai)%d==0&&(yi+bi)%d==0)return 1;
if((xi+bi)%d==0&&(yi+ai)%d==0)return 1;
if((xi+ai+bi)%d==0&&(yi+ai+bi)%d==0)return 1;
return 0;
}
int main(void)
{
t=scaff();
while(t--)
{
a=scaff();
b=scaff();
x=scaff();
y=scaff();
bool flag=iamsosad(a,b,x,y);
if(flag)puts("Y");
else puts("N");
}
return 0;
}