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;
}
这篇博客讨论了2021-2022年ICPC和NERC俄罗斯区域比赛中的一道题目,题目涉及将两个数通过特定操作变为指定数值x。作者解析了题目的思路,指出该操作类似于取模,并提出利用最大公约数(gcd)的性质来解决。最终,给出了C++代码实现来检查能否通过操作使a或b等于x。
&spm=1001.2101.3001.5002&articleId=124424668&d=1&t=3&u=bfd1ad3b61774116a94e918be5bba4a3)
2064

被折叠的 条评论
为什么被折叠?



