TOAD 3 - Take the Last Chip
一个经典的博弈论题。
Problem
有 个石子,A B 两人博弈,A 先手。A 首先取若干个石子(至少一个,不能取完),然后 B 和 A 再轮流取石子,每次取的石子不能超过上次取的石子数,且至少取一个,无法操作的人输。求 满足什么条件时先手必胜。
增强一下:如果不能超过上次取的石子数的两倍,求先手必胜的条件?如果不能超过 ( 表示上次取的石子数, 是一个非降函数),求先手必胜的条件?
Solution
令 为先手必败的 ,易知 1 肯定在 里。
接下来我们递推出 。可以证明,如果 ,其中
我们证明,若 是必胜状态,则 一定也是必胜状态。由于 是必胜状态,所以先手一开始一定可以照着 的必胜策略行动,且先手一定可以拿掉第 个石子。接下来还剩 个石子,一开始的先手变成了后手,所以先手一定可以必胜 。
若 是必败状态,则 也是必胜状态。先手只需一开始拿走 个石子,则还剩 个石子,后手必败,所以先手必胜。
同样,我们可以证明 是必败状态。若先手一开始拿走不小于 个石子,则后手可以把剩下的所有石子拿完。若先手一开始拿走的石子数小于 ,则后手一定有策略拿到第 个石子。此时还剩下 个石子,先手尚未改变,所以先手必败。
当 时,可以得到 。
当 时,可以得到 。