===== 例题 ===== **来源**:Part I, 1.5.3–Ferguson **题目大意**:有一堆 $31$ 颗的石子,每次可以取 $1\sim6$ 颗,但是每种数量至多取 $4$ 次。问胜负情况。 **题解**:不妨先不考虑 $4$ 个的限制。这个比较简单,模 $7$ 余 $0$ 的状态是负态。然而如果先手按这种策略操作,只要后手一直取 $4$,先手最后一轮将无 $3$ 可用。 事实上,先手先取 $5$ 仍可保证取胜。如果后手一直也取 $5$ ,先手取 $2$ 来应对。取了 $4$ 个 $5$ 和 $3$ 个 $2$ 后,还剩 $5$ 个,此时已经不能再取 $5$ 了,因此后手不论怎么取都会输。如果后手某一回合不取 $5$ 了,先手可以立即转移到模 $7$ 余 $0$ 的状态,可以验证这时不论如何先手不会没东西可用,因为开始的若干操作拖延了一回合。 ===== 例题 ===== **来源**:Part I, 1.5.5–Ferguson **题目大意**:有两堆石子,每次操作可以将某堆石子清空,然后把剩下的一堆石子分成两个非空的堆。问胜负情况。 **题解**:如果两堆石子都是奇数,那么先手负,否则先手胜。如果至少有一堆石子是偶数,那么我们可以把这堆石子拆成两个奇数堆,从而转移到负态。而如果两堆石子都是奇数个,显然拆出来至少有一个偶数。 ===== 例题 ===== **来源**:Part I, 1.5.6–Ferguson **题目大意**:给你一个矩形网格,每次选取一个格子,将该格子右上方的部分删除,删掉左下角格子的玩家输。证明除 $1\times1$ 外,先手必胜。 **题解**:假如删掉右上角的格子后是负态,那么命题已经成立。否则后手一定可以进行某种操作转移到一个负态,而容易发现这个操作先手同样可以完成。 ===== 例题 ===== **来源**:Part I, 1.5.7.a–Ferguson **题目大意**:有一堆 $n$ 颗的石子,先手可以任意取,但是不能取完,之后每个人至多只能取上一次取的数量。问胜负情况。 **题解**:我们首先归纳地证明,对于每个 $k\ge0$,如果当前石子数能被 $2^{k+1}$ 整除,且至少能拿 $2^{k}$ 个石子,那么当前这个人不会取 $\le2^{k}$ 个石子。 $k=0$ 时显然,如果先手只拿 $1$ 个,那么之后所有人都只能拿 $1$ 个石子,显然先手就输了。 假设 $\le k$ 时成立。$k+1$ 时,假如先手取了 $x<2^{k+1}$ 颗石子,那么后手直接取 $\text{lowbit}(x)$ 颗石子,我们已经证明了先手不能取 $\le\text{lowbit}(x)$ 颗石子,而先手又没有其它选择,因此这样必败。假如先手取 $2^{k+1}$ 颗石子,后手也同样取 $2^{k+1}$ 颗石子,这样到最后先手还是会输。 这样一来结论就简单了。假如石子个数是 $2$ 的幂,那么先手必败,因为后手可以取 $\text{lowbit}$。否则先手取 $\text{lowbit}$ 即可。 ===== 例题 ===== **来源**:Part I, 1.5.7.b–Ferguson **题目大意**:和上一题大体相同,但是至多可以取上一次取的数量的两倍。 **题解**:首先介绍斐波那契进制,即将一个正整数表示为若干不相邻的斐波那契数之和,可以证明这样的表示是存在且唯一的。 设当前数的斐波那契进制表示为 $a_{1}+\cdots+a_{n},a_{1}>\cdots>a_{n}$。 假如 $n\ge2$,那么先手可以删掉 $a_{n}$,由于 $a_{n-1}>2a_{n}$,因此后手不能一次取完。我们来证明后手不论怎么取,仍然会回到刚刚的情况。假设后手取完后,$a_{n-1}$ 变为了 $b_{1}+\cdots+b_{m}=a_{n-1}-x$,我们想要证明 $2x\ge b_{m}$。采用反证法,假设 $2x1$ **证明**: * 对于胜态: * 若所有 $\text{sg}$ 为 $0$,已经成立。 * 否则若异或和为 $0$,又至少有一个 $1$,把 $1$ 变成 $0$ 即可。 * 若异或和不为 $0$,若有至少两个 $\text{sg}>1$,那么按照 $\text{SG}$ 定理行动即可。这样之后,至少还有一个 $\text{sg}>1$,因此是负态。若只有一个 $\text{sg}>1$,那么按照奇偶性决定将它变成 $1$ 还是变成 $0$。 * 对于负态: * 若异或和为 $0$,则至少有**两个**(不可能是一个)$\text{sg}>1$。不论怎么操作,异或和会变为非 $0$,而 $\text{sg}>1$ 的至少还有一个,因此是胜态。 * 若异或和不为 $0$,则所有 $\text{sg}\le1$。把 $0$ 变成 $1$ 或 $1$ 变成 $0$ 均为胜态。而如果把某个 $\text{sg}$ 变成 $>1$,由于只有一个 $>1$,异或和不为 $0$,因此还是胜态。