有一堆个数为n的石子,游戏双方轮流取石子,满足:
1)先手不能在第一次把所有的石子取完;
2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。
约定取走最后一个石子的人为赢家,求先手必胜态。
先手必败态为石头个数为斐波那契数列中的数的情况(从2开始)。
下面给出证明:
数学归纳法:
1.石头个数为2时,结论成立
2.若当石头个数为<n的斐波那契数时,结论成立,现证明当石头个数为K>=n时
F[k]=F[k-1]+F[k-2]
①当先手第一次拿的石头个数>=F[k-2]时,因为 F[k-1]<2*F[k-2],故后手必能拿完所有的石头,先手必败;
②当先手第一次拿的石头个数<F[k-2]时,F[k-1]<剩下的石头个数< F[k],故其必定不是斐波那契数,这里补充一个定理
“Zeckendorf定理”(齐肯多夫定理):任何正整数可以表示为若干个不连续的Fibonacci数之和
假设剩下的石头个数=F[K-1]+F[ i ]+...+F[ s ] + F[ j ],可以分两种情况讨论
Ⅰ、F[ j ]< =2 * 先手第一次拿的石头个数Y,如此,后手可以拿走 FF[ j ] 块石头,因为:任何正整数可以表示为若干个 不连续 的Fibonacci数之和,故F[ s ] > 2* F[ j ],而 因为 s<n,已在归纳法步骤中假设被证明共有F[ s ]块石头时先手是必败 ,故F[ s ]的最后一块石头一定是后手拿走的,同理可知,一直到 F[K-1]的最后一块石头也是 被后 手拿走的,故先手必败;
Ⅱ、F[ j ] > 2 * Y,现证明这种情况是不存在的。
反证法:
若 F[ j ] > 2 * Y,F[K] = F[K-1]+F[ i ]+...+F[ s ] +F[ j ]+ Y
< F[K-1]+F[ i ]+...+F[ s ] +F[ j ]+ F[ j -1 ] = F[K-1]+F[ i ]+...+F[ s ] +F[ j+1 }
<= F[K-1]+F[ i ]+...+F[ s +1 ] <= F[K-1]+F[ K-2 ] = F[ K ],F[ K ]<F[ K ],
矛盾,假设不成立,故F[ j ] <= 2 * Y
这样,我们通过数学归纳法证明了 先手必败态为石头个数为斐波那契数列中的数的情况(从2开始)。
在此过程中,第 2 步的 ② 同时也证明了非斐波那契数的石头个数是先手必胜态。
证毕。