[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;
} 

转载于:https://www.cnblogs.com/zi-nai-boboyang/p/11437809.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值