Obtain Two Zeroes CodeForces - 1260B

思维

题意

现在给你两个正整数a,b,
每一次操作你可以让a = a-x , b =b-2x 或者 a = a-2x , b = b - x,
每次操作的x为任意正整数,
每***作的x可以不同,
请问是否可以经过若干***作使得a,b同时为0。

分析

这题老实说刚拿到手上有点懵逼。没大有思路。
其实这种题,我们应该去看她的本质。
对于数a,b,我们不妨就令x == 1!!!!!
这样我们就已经做出来了。
假设,操作一用了k1次,操作二用了k2次
那么a = k1+2k2
b = 2
k1+k2
求这个方程,能不能有非负整数k1,k2满足
OK了

下面代码,注意细节:

#include<iostream>;
using namespace std;
int a, b, tmp;

int main() {
    ios::sync_with_stdio(0);
    int t;cin >> t;
    while (t--) {
        cin >> a >> b;
        if (a > b) {
            tmp = a;
            a = b;
            b = tmp;
        }
        int tmp1 = (2 * b - a);
        int tmp2 = (2 * a - b);
        if (b < 0 || a < 0 || tmp1 < 0 || tmp2 < 0 || tmp1 % 3 != 0 || tmp2 % 3 != 0) {
            cout << "NO\n";
        }
        else cout << "YES\n";
    }
}

对这种问题我的反应一向很慢,,,,,唉

全部评论

相关推荐

目前感觉简历还有很多问题,希望各位能不吝赐教以及非常感谢这位老哥——@黑皮白袜臭脚体育生&nbsp;的项目,学完一遍感觉受益颇丰
小菜鸡只想转正:校友,我的建议是冗余的最好去掉,突出重点,比如985,211双一流的提示,专业技能调整到个人项目之后的位置。专业技能感觉写的太细了?占用篇幅最好腾出一点给项目经历,如果没写手机号和邮箱,记得加上。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务