2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd)

这篇博客讨论了2021-2022年ICPC和NERC俄罗斯区域比赛中的一道题目,题目涉及将两个数通过特定操作变为指定数值x。作者解析了题目的思路,指出该操作类似于取模,并提出利用最大公约数(gcd)的性质来解决。最终,给出了C++代码实现来检查能否通过操作使a或b等于x。
摘要由CSDN通过智能技术生成

2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd)

链接
题意:给出a,b,有两种选择,一种把a设置成 ∣ a − b ∣ |a-b| ab,或者把b设置成 ∣ a − b ∣ |a-b| ab,问最后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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值