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.
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.
For example, 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.
以前没有什么刷题的经验,本着先易后难的原则找了个通过率最高的先看看,初看居然还是有点蒙。仔细看了下他的例子,4个怎么着都不会赢,所以最后必须得剩4个给他,分析了567个,都能做到,8个就不行,所以就想着应该跟4的倍数很有关系,只要初次给自己的不是4的倍数就不会有啥问题。于是
class Solution {
public:
bool canWinNim(int n) {
return n % 4 != 0;
}
};
提交了一下,就过了!!!
高兴