思维
题意
现在给你两个正整数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 = 2k1+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";
}
}对这种问题我的反应一向很慢,,,,,唉

京公网安备 11010502036488号