我是否想假了?
通过维持某种东西不变来找必败态。
有两堆石子X,Y(假设X<Y)。
我们可以把一堆石子拿走 2i 个,并同时给另一堆加上 i 个。
第一次变换:X+i, Y−2i
可以发现,第一次变换是必然发生的。
假如最初的状态是必败态。
那么后手可以做什么来维持初始状态呢?
可以把第一堆拿走 2i 个,然后把另一堆加上 i 个
第二次变换:X−i,Y−i
我们发现第二次变换后,两堆石子数量之差不变。
考虑必败态就是石子数量之差。
通过找简单的初始态来找必败态
X=1,Y=1 先手必败态
X=2,Y=2 ,第一次操作之后一定为X=3,Y=0,下一次操作之后变成X=1,Y=1的先手必败态。
若 X=Y 是先手必败态,那么我们需要证明后手在先手进行任意一次操作后,总能变回 X=Y 的状态。
这已经在上面证过了。
所以 ∣X−Y∣=0 是先手必败态。
X=1,Y=2 第一次操作之后一定为X=2,Y=0,第二次操作后一定为X=0,Y=1,先手必败。
所以∣X−Y∣=1先手必败
考虑将 Y−X→Y′−X′=1 (Y′,X′指的是一次操作之后的石子数量)。
我们不难发现每次变换操作一定会有:
Y,X→Y−2i,X+i→(Y−X−3i)=2k−3i 条件是(Y-X>3i)$$....... 1
或
Y,X→Y−2i,X+i→(X−Y+3i)=3i−2k 条件是(Y−X≤3i) .......2
所以,当石子数量之差为 2,那么可以利用式子 2,将其变为数量之差为 1 的先手必败态。
所以石子数量之差为 2,先手必胜。
石子数量之差为 2k 呢,显然可以利用条件 1 ,将其变为数量之差为 1 的先手必败态。
所以石子数量之差为 2k,先手必胜。
当石子数量之差是 3k 。
因为 Y,X→Y−2i,X+i→(Y−X−3i)
每一次石子数量之差都会减少3i。
那么我们可以一次性将 Y−X=3k 变成 Y′−X′=0 。
而 ∣X−Y∣=0 是先手必败态。
所以 ∣X−Y∣=3 是先手必胜态。
当石子数量之差为 4k。这等价于2k
当石子数量之差为 5k。
我们不难发现每次变换操作一定会有:
Y,X→Y−2i,X+i→(Y−X−3i)=5k−3i 条件是(Y-X>3i)$$....... 1
或
Y,X→Y−2i,X+i→(X−Y+3i)=3i−5k 条件是(Y−X≤3i) .......2
换句话说,除了 3 的倍数,和两个必败态,其余任意一个数都可以由 3i−1 或 3i+1 变换成 1。
可以发现,总存在一个 i,可以将Y′−X′变为 1
所以总结规律就是,∣X−Y∣≤1先手必败,否则先手必胜。