1. 程式人生 > 實用技巧 >Leetcode 1025. 除數博弈

Leetcode 1025. 除數博弈

地址https://leetcode-cn.com/problems/divisor-game/

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。

最初,黑板上有一個數字N。在每個玩家的回合,玩家需要執行以下操作:

選出任一x,滿足0 < x < N 且N % x == 0。
用 N - x替換黑板上的數字 N 。
如果玩家無法執行這些操作,就會輸掉遊戲。

只有在愛麗絲在遊戲中取得勝利時才返回True,否則返回 false。假設兩個玩家都以最佳狀態參與遊戲。



示例 1:

輸入:2
輸出:true
解釋:愛麗絲選擇 1,鮑勃無法進行操作。
示例 2:

輸入:3
輸出:false
解釋:愛麗絲選擇 1,鮑勃也選擇 1,然後愛麗絲無法進行操作。 提示: 1 <= N <= 1000

解答

演算法1
2 必勝
3 必輸
4 可以選擇減1 使得對方回合只剩3 自己必勝
5 只能選擇1 使得對方回合必勝 自己必輸
6 可以選擇2 3 1, 選擇3、1都可以讓對方必輸
結合簡單難度,我有個大膽的推測

class Solution {
public:
    bool divisorGame(int N) {
        return (N+1)%2;
    }
};