题目链接:
题意:中文题诶~
思路:(a, b)可以直接到达(a+b, b), (a, a+b), (a-b, b), (a, a-b),显然这样的路径是可逆的。那么要从(a, b)到(x, y),当且仅当存在一点p, 从(a, b), (x, y)出发都能到达。
由题意还可以知道,若gcd(a, b)=d,那么从(a, b)出发必定可以到达(d, d),那么显然由(a, b)可以到达(x, y)的充要条件是gcd(a, b)=gcd(x, y)。
代码:
1 #include2 #define ll long long 3 using namespace std; 4 5 int get_gcd(ll x, ll y){ 6 return y==0?x:get_gcd(y, x%y); 7 } 8 9 int main(void){10 ll a, b, x, y;11 int t;12 scanf("%d", &t);13 while(t--){14 scanf("%lld%lld%lld%lld", &a, &b, &x, &y);15 int cnt1=get_gcd(a, b);16 int cnt2=get_gcd(x, y);17 if(cnt1==cnt2){18 printf("Yes\n");19 }else{20 printf("No\n");21 }22 }23 }