题目描述:
小A和小B在玩一个游戏,每局游戏的结果可能有胜平负三种。游戏的胜者得到 3分,败者不得分,若打平则双方都得 1分。
现在他们进行了若干局游戏,比分记录着小A为 X 分,小B为 Y 分。由于持续的时间太长了,他们不确定记录的比分是否是正确的了,请你来判断一下此时的比分是否合法吧。
输入描述:
多组测试。 第一行一个正整数 T (1≤T≤103),表示测试数据组数。 接下来 T行,每行两个整数 X 和 Y (0≤X,Y≤109) ,分别表示比分所记录的小A和小B的分数。
输出描述:
对于每组测试,如果合法输出一行 "Yes" ,否则输出 "No"(均不包含引号)。
示例1
输入
3 1 3 3 3 4 15
输出
No Yes No
思路:
设A赢得次数是a,B赢的次数是b,双方平局的次数是c
可得:
3a + c = x;
3b + c = y;
移动后得:
3(a - b) = x - y;
可以看出来x-y一定是3的倍数
AC代码:
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
cin.tie(0)->ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)
{
ll x,y;
cin >> x >> y;
ll ans = abs(x-y);
if(ans % 3 == 0)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
return 0;
}