## Coin Piles [題目連結](https://cses.fi/problemset/task/1754) 先給你一個數字 $t$ 代表接下來共有幾組數字,接下來 $t$ 行看下方的輸入與代表意義 給你兩個數字 $a、b$ 各代表兩堆硬幣的個數,現在你可以進行一個操作,在每一次操作 你要選擇一堆拿取兩個硬幣,另一堆則拿取一個硬幣,直到兩堆都在同一次操作剛好被拿完 如果 $a、b$ 的數量不能夠拿到題目要求,輸出 "NO",如果可以,輸出 "YES" $2\ 1$ => 左拿 $2$ 右拿 $1$ => $0\ 0$ => YES --- 題目標籤 : 迴圈、判斷 本題提示 : 要去思考什麼樣的組合一定不能剛好拿完,與 $a、b$ 兩者之間的關聯又是甚麼 解題思路 : 這題可以先把 $a、b$ 合在一起思考,從任一堆拿 $2$ 另一堆拿 $1$ => 總共拿 $3$ 也就是說如果 $a+b$ 如果不是 $3$ 的倍數就**一定沒辦法剛好拿完** 接下來考慮分開的情況,這裡我們要用到極端情況的方法,假如 $a=1,\ b=10000$ 肯定不行,因為即使我們全部都從 $b$ 拿 $2$,$a$ 還是不夠,所以極端合格應該是 全部都在 $b$ 拿 $2$ 且 $a$ 拿 $1$ 剛好全拿完,也可以說是 $2b = a$,上述推理 $a、b$ 可調換 到這邊我可以用一個數學證明除了上述的問題之外都是可行解,但我覺得這應該可以感覺出來 ```cpp= #include<bits/stdc++.h> using namespace std ; int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0) ; int t ; cin >> t ; for (int i=0;i<t;i++) { int a, b ; cin >> a >> b ; if ((a+b) % 3 != 0 || (a / 2) > b || (b / 2) > a) cout << "NO\n" ; // 有問題的情況 else cout << "YES\n" ; // 無問題的情況 } return 0 ; } ```