可能更好的阅读体验
1. 问题
有一堆个数为
n
(
n
≥
2
)
n(n\ge 2)
n(n≥2) 的石子,游戏双方轮流取石子,规则如下:
- 先手不能在第一次把所有的石子取完,至少取
1
1
1 颗;
- 在此之后每次可以取的石子数至少为
1
1
1,至多为对手 刚取的 石子数的
2
2
2 倍。
约定取走最后一个石子的人为胜利,求先手何时必胜、必败。
2. 结论与证明
**结论:**当
n
n
n 为
Fibonacci
\text{Fibonacci}
Fibonacci 数的时候先手必败,否则先手必胜。
首先证明当
n
n
n 为
Fibonacci
\text{Fibonacci}
Fibonacci 数的时候先手必败,不妨考虑数学归纳法:
对于
n
=
2
n=2
n=2 的情况,显然此时先手必败。
接着不妨设
n
=
f
k
?
1
n=f_{k-1}
n=fk?1? 之时结论成立,现在我们证明
n
=
f
k
n=f_k
n=fk? 的情况。此时可以将石子分成
f
k
?
2
,
f
k
?
1
f_{k-2},f_{k-1}
fk?2?,fk?1? 两堆,为啥捏?考虑
2
f
k
?
2
>
f
k
2f_{k-2}>f_k
2fk?2?>fk?,所以一旦先手取石子数
≥
f
k
?
2
\ge f_{k-2}
≥fk?2?,后手就一定能一次取完所有石子。这个结论很重要,也是下文证明的根基。
-
若先手取
>
1
3
f
k
?
2
> \frac{1}{3} f_{k-2}
>31?fk?2? 个石子。此时后手可以取完
f
k
?
2
f_{k-2}
fk?2? 这个石子堆,并且由于后手取的石子数
<
2
3
f
k
?
2
<\frac{2}{3}f_{k-2}
<32?fk?2?,下一轮先手取的石子数也只能
<
4
3
f
k
?
2
=
f
k
?
2
+
1
3
f
k
?
2
<\frac{4}{3}f_{k-2}=f_{k-2}+\frac{1}{3}f_{k-2}
<34?fk?2?=fk?2?+31?fk?2?,而
f
k
?
1
=
f
k
?
2
+
f
k
?
3
f_{k-1}=f_{k-2}+f_{k-3}
fk?1?=fk?2?+fk?3?,且
1
3
f
k
?
2
<
f
k
?
4
<
f
k
?
3
\frac{1}{3}f_{k-2}<f_{k-4}<f_{k-3}
31?fk?2?<fk?4?<fk?3?,所以先手取不完
f
k
?
1
f_{k-1}
fk?1? 这堆石子。由于
n
=
f
k
?
1
n=f_{k-1}
n=fk?1? 时结论成立,而且此时先手的选择空间进一步缩小,所以归纳可得
n
=
f
k
n=f_k
n=fk? 时先手必败。 -
若先手取
≤
1
3
f
k
?
2
\le \frac{1}{3} f_{k-2}
≤31?fk?2? 个石子。此时可以将
f
k
?
2
f_{k-2}
fk?2? 这个石子堆分成
f
k
?
4
,
,
f
k
?
3
f_{k-4,},f_{k-3}
fk?4,?,fk?3? 两堆,这是考虑到
1
3
f
k
?
2
<
f
k
?
4
\frac{1}{3} f_{k-2}<f_{k-4}
31?fk?2?<fk?4?. 然后我们应用上文的结论,同样也可以归纳得到
n
=
f
k
n=f_k
n=fk? 时先手必败。需要注意的是,上文我们并没有证明后手取完
f
k
?
3
f_{k-3}
fk?3? 这一堆时的取石子数的范围,但是,由于
f
k
?
3
f_{k-3}
fk?3? 的下一堆是
f
k
?
1
f_{k-1}
fk?1?,中间一定间隔了编号,所以
2
f
k
?
3
<
f
k
?
1
2f_{k-3}<f_{k-1}
2fk?3?<fk?1?,此时先手仍然无法取完
f
k
?
1
f_{k-1}
fk?1?. 这也是下文证明先手必胜情况的依据。
现在证明当
n
n
n 不为
Fibonacci
\text{Fibonacci}
Fibonacci 数的时候先手必胜,需要用到
Zeckendorf?Theorem
\text{Zeckendorf Theorem}
Zeckendorf?Theorem:任意自然数均可以被分解为若干个 不连续的
Fibonacci
\text{Fibonacci}
Fibonacci 数之和。
我们先将
n
n
n 分解为若干个不连续的
Fibonacci
\text{Fibonacci}
Fibonacci 数之和,然后取走最小
Fibonacci
\text{Fibonacci}
Fibonacci 数的石子数。由于不连续,此时后手无法取完任何一个
Fibonacci
\text{Fibonacci}
Fibonacci 数,这就又回到了 "
n
n
n 为
Fibonacci
\text{Fibonacci}
Fibonacci 数的时候先手必败" 的情况。所以此时先手必胜。
|