Nim Game


@yake For example, the binary presentation of 4 is 100, 8 is 1000..., which means the last two bits is always 0 if the number is 4's multiples. So n & 3 (n & 11) is for checking if the number is 4's multiples, and that is the result, too.

@yake: Compiler will probably optimize that anyway. In that case, I rather use the remainder which would be more clear.

@bdsh_14 In this question, both of you and your friend are very clever and have optimal strategies for the game. So if you pick 3, the opponent will pick 2 then you will lose.

@bdsh_14
If there are 8 stones and it's your turn you lose. If you take 3, Opponent will take 1 to force you to have n = 4 and lose next turn.
 If you take 2, Opponent will take 2 to force you to have n = 4 and lose next turn.
 If you take 1, Opponent will take 3 to force you to have n = 4 and lose next turn.
This occurs for every multiple of 4. For example if there are 12 stones:
 If you take 3, Opponent will take 1 to force you to have n = 8 which we already know is a losing condition.
 If you take 2, Opponent will take 2 to force you to have n = 8 which we already know is a losing condition.
 If you take 1, Opponent will take 3 to force you to have n = 8 which we already know is a losing condition.