51nod 1247 可能的路径
2017-07-30 00:00
134 查看
逆向思维,先证明点p1可以到点p2,然后可以从p2返回p1。然后找一点m,如果点(a,b)可以到达m,并且点(x,y)也可以到大m,则(a,b)可以到达(x,y)
相关讨论里给的证明:
给个不太严谨的证明思路:
第一步:证明路径可逆,也就是如果(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)
由此联想到欧几里得算法求解最大公约数的过程,不用多说了。。。
相关讨论里给的证明:
给个不太严谨的证明思路:
第一步:证明路径可逆,也就是如果(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; int main() { ios::sync_with_stdio(false); long long t; cin >> t; long long a,b,x,y; while(t--) { cin >> a >> b >> x >> y; if(__gcd(a,b) == __gcd(x,y)) cout << "Yes" <<endl; else cout << "No" << endl; } return 0; }
相关文章推荐
- 51nod 1247 可能的路径 (最大公约数变形)
- 51nod 1247 可能的路径
- 51nod_1247可能的路径
- 51nod 1247 可能的路径
- 51Nod-1247-可能的路径
- 51Nod 1247 可能的路径
- 51nod 1247 可能的路径
- AC日记——可能的路径 51nod 1247
- 51NOD 1247 可能的路径 GCD
- 51nod 1247 可能的路径
- 【51nod】1247 可能的路径
- 51nod 可能的路径
- 51 nod 1247 可能的路径(exgcd)
- 1247 可能的路径 逆向思维
- Visual Assist X尽量避免在非英文目录下使用,否则可能由于文件路径不能识别而导致不能进行提示
- 值得收藏 | 关于机器学习,这可能是目前最全面最无痛的入门路径和资源!
- 解答树后项添加的过程中因为存在分支,所以你想的一个排列不一定在你要的分支路径上,虽然已有的排列可能满足条件Uva129(TMDTMDMTMD)从九点到早上四点终于干翻了,主要集中输出格式递归迭代算法
- 51nod 1274 最长递增路径【dp】
- 51nod 1610 路径计数
- 51nod 1076 2条不相交的路径(边双连通分量)