第1行:一個數T,表示輸入的測試數量(1 <= T <= 5000)
第2 - T + 1行:每行4個數,a, b, x, y,中間用空格分隔(1 <= a, b, x, y <= 10^18)
輸出共T行,每行對應1個結果,如果可以,輸出"Yes",否則輸出"No"。
2
1 1 2 3
2 1 2 3
Yes
Yes
思路:從(a,b)可以到達gcd(x,y)與gcd(a,b)的(x,y)點。這個結論其實和更相減損法差不多。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
LL gcd(LL a,LL b){
return b==0 ? a: gcd(b,a%b);
}
int main(){
int t;
scanf("%d",&t);
while(t--){
LL a,b;
LL x,y;
scanf("%lld%lld%lld%lld",&a,&b,&x,&y);
if(gcd(a,b)==gcd(x,y)){
puts("Yes");
}
else puts("No");
}
return 0;
}