【HAOI2011】向量(裴蜀定理+gcd)
通过一段大力分析,我们发现其实转化成了
x,y +-2a || +-2b || +a,+b || +b,+a 其中,后两个操作分别最多进行一次(因为多了过后就可以转化成前两种操作)
此时我们可以联想到裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数
也就是说,**必须当d|x,d|y的时候,x,y才能被2a,2b构造出来
当然,我们还要判断(x+a,y+b),(x+b,y+a),(x+a+b,y+b+a),因为还有后两种操作
//需要开longlong
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int T;
ll d;
inline ll gcd(ll x,ll y),
{
if(y==0) return x;
else return gcd(y,x%y);
}
inline bool check(ll u,ll v)
{
if(u%d==0&&v%d==0) return true;
else return false;
}
int main()
{
cin>>T;
for(int i=1;i<=T;i++)
{
ll a,b,x,y;
cin>>a>>b>>x>>y;
d=gcd(2*a,2*b);
if(check(x,y)||check(x+a,y+b)||check(x+b,y+a)||check(x+a+b,y+b+a)) puts("Y");
else puts("N");
}
return 0;
}
QQ40523591~欢迎一起学习交流~