具体思路来自相关讨论

给个不太严谨的证明思路:

第一步:证明路径可逆,也就是如果(a, b) -> (x, y)可行,则(x, y) - > (a, b)可行

这个比较直观,只需要分别由(a +b, b) (a, a + b), (a - b, b), (a, a - b)推回(a, b)即可:

例如:(a, a - b) - > (b, a - b) - > (b, a) -> (a + b, a) - > (a + b, b) -> (a, b)

(a, a + b)->(2a + b, a + b) - > (2a + b, a)->(a + b, a) ->(a+b, b) ->(a, b)

注意这里也顺手说明了(a, b)->(b, a)可行

第二步:既然路径可逆,那题目的可以这样改写:是否存在点(m, n)使得(a, b) -> (m, n)可行且,(x, y)->(m, n)可行

   因为(a, b) -> (b, a)可行,则不失一般性,可假设:a > b

可以这样逐次推导:(a, b) -> (a - b, b) -> (a - 2b, b)-> … ->(a - nb, b),其中, n = a / b, 则,改写一下:

(a, b) - > (a % b, b) ->(b, a % b)

由此联想到欧几里得算法求解最大公约数的过程,不用多说了。。。

#include <bits/stdc++.h>
using namespace std; typedef long long LL; int main()
{
LL x,y,a,b;
LL g1,g2; int T;
scanf("%d",&T);
while(T--)
{
cin>>a>>b>>x>>y;
g2=__gcd(a,b);
g1=__gcd(x,y);
if(g1==g2)
puts("Yes");
else
puts("No");
}
return 0;
}

最新文章

  1. Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
  2. MIT Scheme 使用 Edwin
  3. angular.js学习笔记
  4. Html=&gt;Head=&gt;meta
  5. WINDONWS7+VS2012+Cocos2d-x
  6. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】
  7. C# Attribute
  8. ASP.NET基础之HttpModule学习
  9. mongo查询系统
  10. web切图的几个快捷键及总结
  11. 双跑道------js分机号
  12. 【Codeforces 1132D】Stressful Training
  13. OGG实现两台Oracle数据库的同步
  14. PAT 乙级 1036 跟奥巴马一起编程(15) C++版
  15. LCIS hdu3308 (线段树 区间合并)
  16. HDU 6127 Hard challenge(扫描线)
  17. 《WAP团队项目需求分析改进》
  18. linux内核设计与实现一书阅读整理 之第十八章
  19. POJ1751 Highways 2017-04-14 15:46 70人阅读 评论(0) 收藏
  20. C++ Primer Plus学习:第十章

热门文章

  1. 增强版的RecycleViewAdapter,能够直接使用
  2. C#语言 循环语句
  3. cocos2d-x 3.0 touch事件官方解释
  4. CAS原子操作实现无锁及性能分析
  5. u-boot简单学习笔记(二)——AR9331 uboot.lds分析
  6. linux进程间通信消息队列:msgsnd: Invalid argument
  7. Hadoop之HDFS文件操作
  8. OpenCV2.3.1在CentOS6.5下的安装
  9. hibernate 的POJO状态
  10. monggodb 复制集 集群 搭建