必胜点和必败点的性质:
两个人玩这个游戏,他们轮流操作。
有若干堆石子,每堆石子的数量都是有限的。
一次合法的移动是 “选择一堆石子并拿走若干颗(不能不拿)”。
如果轮到某个人时所有的石子堆都已经被拿空了,则判负。
如果双方都按照最优策略,谁必胜?
对于一个 nim 游戏的局面 $(a_1,a_2,\cdots,a_n)$,它是 $P$ 点当且仅当: $$ a_1\oplus a_2\oplus\cdots\oplus a_n=0 $$ 【证明】
我们设 $a_1\oplus a_2\oplus\cdots\oplus a_n=k$,那么设 $k$ 的二进制表示下最高位的 $1$ 为 第 $p$ 位。
那么,$a_1,a_2,\cdots,a_n$ 中必定存在至少一个 $a_i$ 使得 $a_i$ 二进制表示下第 $p$ 位为 $1$。
从而,将第 $i$ 堆石头取 $a_i-a_i\oplus k$ 个石头即可保证一定到达 $P$ 点。
首先,由于 $a_i\oplus k$ 第 $p$ 位为 $0$,所以 $a_i\oplus k<a_i$,从而 $a_i-a_i\oplus k>0$,符合游戏规则。
并且,取 $a_i-a_i\oplus k$ 个石头后,第 $i$ 堆石头变为 $a_i\oplus k$,对于新局面 $(a_1,a_2,\cdots,a_i\oplus k,\cdots,a_n)$: $$ a_1\oplus a_2\oplus\cdots\oplus(a_i\oplus k)\oplus\cdots\oplus a_n=k\oplus k=0 $$ 从而一定为 $P$ 点。