@@ -0,0 +1,1322 @@
+/**%0A * You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you%0A * take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first%0A * turn to remove the stones.%0A *%0A * Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can%0A * win the game given the number of stones in the heap.%0A *%0A * 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%0A * remove, the last stone will always be removed by your friend.%0A *%0A * Hint:%0A *%0A * If there are 5 stones in the heap, could you figure out a way to remove the stones such that you will always be the%0A * winner?%0A *%0A * Tags: Brainteaser%0A *%0A * Similar Problems: (M) Flip Game II%0A */%0Apublic class NimGame %7B%0A%0A    /**%0A     * when n is 4, no matter you remove 1 or 2 or 3 stones, you always lose%0A     * suppose n = 4k, always lose%0A     * when k is k+1, n is 4k+4, which is 4 more stones to remove%0A     * no matter 1 or 2 or 3 stones you remove, your opponent can still make you 4k stones%0A     * for n = 4k+1, 4k+2, 4k+3, you can always remove 1, 2, 3 stones, relatively, to win%0A     */%0A    public boolean canWinNim(int n) %7B%0A        return n %25 4 != 0;%0A    %7D%0A%7D%0A

add 292 Nim Game