一、标准巴什博弈(取光者赢)
问题
-
共
n个石子 -
每人每次取
1 ~ m个 -
取光者 赢
-
先手是否必胜?
结论(必背)
text
n % (m+1) == 0 → 先手必败(NO / P态)
n % (m+1) != 0 → 先手必胜(YES / N态)
最优策略
-
先手第一步取
n % (m+1) -
之后每轮与对手凑
m+1
二、取光者输(反常博弈 / Misère)
问题
规则同上,但:
- 取 最后一块石子的人输
结论
text
(n-1) % (m+1) == 0 → 先手必败
否则 → 先手必胜
理解方式
-
把"必败"前置到"剩 1 个石子"
-
相当于把总石子数"减 1"后套用标准巴什博弈
三、取石子范围不是 1~m,而是 L~R
问题
-
每次取
[L, R]个石子 -
L ≥ 1
结论(取光者赢)
python
mod = n % (L + R)
if mod == 0:
必败
elif 1 <= mod <= L-1:
必败
else:
必胜
记忆口诀
模 (L+R) 的余数落在 [0] ∪ [1, L-1] 就是必败
四、取石子上限不固定(但连续)
这是最通用的形式:
- 每次取
[1, m]或[L, R]本身就是巴什博弈 / 广义巴什博弈
👉 核心思想不变 :
构造"必胜/必败周期",周期长度 = 最小取法 + 最大取法
五、常见变形与高考/竞赛题考点
| 变形类型 | 判断方式 | 典型特征 |
|---|---|---|
| 报数游戏 | 同巴什博弈 | 报到 n 的人赢 |
| 取硬币 / 拿牌 | 同巴什博弈 | 多堆 → Nim |
| 连续区间取法 | 模 (L+R) | L > 1 |
| 最后一颗输 | (n-1) % (m+1) | Misère |
| 可跳过轮次(少见) | 需动态规划 | 不是简单取余 |
六、竞赛中的常见陷阱
✅ 正确 ✅
-
看到 "一次 1~m" + "最后取完赢" → 直接
n % (m+1) -
看到 "赢 / 输"互换 → 考虑
n-1 -
看到 下界不是 1 → 转为
[L, R]模型
❌ 易错 ❌
-
多堆石子直接用巴什博弈 ❌(那是 Nim)
-
误以为"取光者输"的周期也是 m+1 ❌
-
L > 1 时还按 1~m 做 ❌
七、一句话总结
巴什博弈的核心就是"补数思想"(互补到
L+R)
变形只改三件事:谁赢终局、取的范围、单堆还是多堆