# 【LeetCode】 292. Nim Game ## Description > You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones. > Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap. > 你在和朋友玩拈(尼姆)遊戲:有一堆石頭在桌上,每次你的回合可以拿走一到三顆石頭。誰拿走最後一顆石頭的就是贏家。你先手。 > 你們兩個都很聰明,一定會採取最佳策略。請寫一個程式,給予開場的石頭數量,判斷你是能夠贏得這場遊戲。 ## Example: ``` Example: Input: 4 Output: false Explanation: If there are 4 stones in the heap, then you will never win the game; No matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend. ``` ## Solution * 當石頭為1~3顆,你可以直接拿光,你贏了。 * 當石頭為4顆,你不管拿幾顆,對手都可以拿光,你輸了。 * 當石頭為5~7顆,你都可以拿到剩4顆,你贏了。 * 當石頭為8顆,不管你拿幾顆,對手都可以拿到剩4顆,你輸了。 * 你可以發現,當石頭為`4`的倍數的時候,你會輸,反之則贏。 ### Code ```C++=1 class Solution { public: bool canWinNim(int n) { return (n % 4); } }; ``` ###### tags: `LeetCode` `C++`