2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd)
链接
题意:给出a,b,有两种选择,一种把a设置成
∣
a
−
b
∣
|a-b|
∣a−b∣,或者把b设置成
∣
a
−
b
∣
|a-b|
∣a−b∣,问最后a或者b能不能变成x
思路:可以发现的是,这个操作就是一个类似于取模的操作,最后的结果可以被x整除,我们可以类比求gcd的方法,最后的结果是x,就是说
m
a
x
(
a
,
b
)
%
m
i
n
(
a
,
b
)
=
=
x
%
m
i
n
(
a
,
b
)
max(a,b)\%min(a,b)==x\%min(a,b)
max(a,b)%min(a,b)==x%min(a,b),再套上gcd就可以了
#include<bits/stdc++.h>
using namespace std;
#define int long long
void check(int a, int b, int x)
{
while (a && b) {
if (a > b) swap(a, b);
if ((b % a == x % a) && x <= b && x >= a) {cout << "YES" << endl; return;}
b %= a;
}cout << "NO" << endl;
}
signed main()
{
int T;
cin >> T;
while (T--) {
int a, b, x;
cin >> a >> b >> x;
check(a, b, x);
}
return 0;
}