Coin Piles
題目
有兩個硬幣堆,分別有 和 個硬幣。 每次你可以有兩種操作
- 從左側一堆中取出 1 枚硬幣,從右側一堆中取出 2 枚硬幣
- 從左側一堆中取出 2 枚硬幣,從右側一堆中取出 1 枚硬幣。
請問是否能依照操作同時清空這兩堆硬幣。
輸入
一個整數 ()表示測資數量。 接著有 行,每行有兩個 整數 和 (),表示兩堆的硬幣數量。
輸出
對於每個測資,若可以清空兩硬幣堆則輸出 "YES",否則輸出 "NO"。
範例測資
Input:
3
2 1
2 2
3 3
Output:
YES
NO
YES
經過操作 後兩堆皆為
無法透過任何操作使兩堆硬幣為
經過操作 和操作 後兩堆皆為
想法
因為每次操作都會取走 3 枚硬幣,所以若要同時清空這兩堆硬幣,則這兩堆硬幣數量總和應為 3 的倍數,且須確保 某堆硬幣數量的一半 必須不比另一堆硬幣數量多,不然會導致有一堆無法被清空。
範例程式碼
C++ 範例
#include <bits/stdc++.h>
using namespace std;
int main(){
int a, b, t; cin >> t;
while(t--){
cin >> a >> b;
if((a + b) % 3 != 0 || (a / 2) > b || (b / 2) > a){
cout << "NO" << endl;
}
else {
cout << "YES" << endl;
}
}
}