leetcode 1025. 除數博弈

【題目】1025. 除數博弈

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。
最初,黑板上有一個數字 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】數學

  • 數字N如果是奇數,它的約數必然都是奇數;若爲偶數,則其約數可奇可偶。
  • 無論N初始爲多大的值,遊戲最終只會進行到N=2時結束,那麼誰輪到N=2時誰就會贏。

因爲愛麗絲先手

  • N初始若爲偶數,愛麗絲則只需一直選1,使鮑勃一直面臨N爲奇數的情況,這樣愛麗絲穩贏;
  • N初始若爲奇數,那麼愛麗絲第一次選完之後N必爲偶數,那麼鮑勃只需一直選1就會穩贏。
  • 所以判斷N是奇數還是偶數,即可得出最終結果!
class Solution {
    public boolean divisorGame(int N) {
        return N % 2 == 0;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章