k(a,b)+q(b,a)+w(a,−b)+c(b,−a)=(x,y)
(k+w)a+(q+c)b=x
(k−w)b+(q−c)a=y
裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。
可得a×x+b×y=c
x和y有整数解条件是 gcd(a,b)|c
证明:令a=p×gcd(a,b),b=q×gcd(a,b)
原式=(p∗x+q∗y)∗gcd(a,b)
=c
因为gcd(a,b)为整数,要使x和y为整数,gcd(a,b)|c。
(k+w)a+(q+c)b=x
(k−w)b+(q−c)a=y
(k+w),(q+c),(k-w),(q-c)均为整数的条件是gcd(a,b)|x且gcd(a,b)|y
但(k+w),(k-w)有整数解不一定k和w有整数解 q+c和q-c是同理的
设(k+w)=f,(k−w)=g则
k=(f+g)/2,w=(f−g)/2
因为2|(f+g)且2|(f−g)要使k和w均为整数则f和g均为偶数或奇数。
#include<bits/stdc++.h>
using namespace std;
long long T,a,b,x,y,k;
inline bool pd(long long x,long long y){
if (x%k==0&&y%k==0)
return true;
else
return false;
}
int main(){
scanf("%lld",&T);
while (T--){
scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
k=__gcd(a,b)*2;
if (pd(x,y)||pd(x+a,y+b)||pd(x+b,y+a)||pd(x+a+b,y+a+b))
printf("Y
");
else
printf("N
");
//printf("%d",k);
}
return 0;
}