[Medium] 解法 : Math
題意 :
有兩列,第一列會有 x 朵花,第二列則有 y 朵。有兩個人,Alice 和 Bob,Alice 會先挑選其中一朵花丟掉,再來換 Bob 挑選花丟掉,如果丟掉花後,兩列都沒有花了,則最後挑選花的人獲勝。
給定 n 與 m,去看共有幾種 (x, y) 組合,其中 x 在 [1, n] 範圍內,y 在 [1, m] 範圍內,能讓 Alice 獲勝。
解題思路 :
因為 Alice 先挑選,因此兩列花朵數總和為奇數時, Alice 總是獲勝,因此問題轉化成有多少組合讓 x + y 為奇數,奇數的組合如下。
- x為奇數 + y為偶數
- x為偶數 + y為奇數
因此去計算 x 在 [1, n] 中為奇數的個數,y 在 [1, m] 中為偶數的個數,再把兩者個數相乘得到第一個狀況的可能性,反推也可求出第二個狀況可能性,相加即是答案。
class Solution {
public:
long long flowerGame(int n, int m) {
long long ans = 0, odd, even;
even = m/2;
odd = m/2 + (m%2);
ans += (n/2)*odd;
ans += ((n/2)+(n%2)) * even;
return ans;
}
};
Extra :
解題非常單純,難在看懂題目敘述😶