# 8. 轮流拿石子

描述:桌上有一堆石子,两位玩家轮流从中拿取石子,每次至少拿1颗,最多拿3颗。拿到最后一颗石子的人获胜。请问先手是否有必胜策略?如果有,策略是什么?

# 分析问题

  1. 游戏规则

    • 两名玩家轮流拿石子。
    • 每次可以拿 1~3 颗
    • 拿到最后一颗石子的人获胜
    • 先手玩家希望确保自己赢得游戏。
  2. 核心目标

    • 找出 先手是否存在必胜策略
    • 如果有,如何操作 保证必胜

# 基本分析

  1. 小规模情况分析

    • 1 颗石子:先手直接拿走,胜利
    • 2 颗石子:先手拿走全部,胜利
    • 3 颗石子:先手拿走全部,胜利
    • 4 颗石子:无论先手拿 1、2 或 3 颗,后手总能拿到最后一颗,因此先手 必败
  2. 更大规模

    • 5 颗石子:先手拿 1 颗,剩下 4 颗,后手进入 必败 状态,先手 必胜
    • 6 颗石子:先手拿 2 颗,剩下 4 颗,后手进入 必败 状态,先手 必胜
    • 7 颗石子:先手拿 3 颗,剩下 4 颗,后手进入 必败 状态,先手 必胜
    • 8 颗石子:无论先手拿 1、2、3 颗,后手都可以让剩余的石子变成 4 颗(必败状态),所以 先手必败

由此可以发现:

  • 如果石子数是 4 的倍数,则 先手必败
  • 如果石子数 不是 4 的倍数,先手总能通过拿取合适数量,使对手进入 4 的倍数状态(必败状态),从而 保证自己获胜

# 结论与策略

  1. 必胜条件:如果石子总数 不是 4 的倍数,先手可以 控制局势,让后手进入 4 的倍数状态,从而获胜。
  2. 必败条件:如果石子总数 是 4 的倍数,先手无论如何操作,都会让对手进入 非 4 的倍数状态(必胜),所以必败。
  3. 具体策略
    • 若石子数为 4 的倍数,无论怎么拿都会输,先手必败
    • 若石子数不是 4 的倍数,先手应该:
      • 先拿走 使剩余石子数变成 4 的倍数
      • 例如,石子总数 N % 4 = X(1≤X≤3),先手应该 拿 X 颗,让剩余的石子变成 4 的倍数,使后手进入必败状态。

# 示例

  • N = 10:先手应该拿 2 颗,剩下 8 颗(4 的倍数),后手必败 ✅
  • N = 12:先手应该拿 0 颗、1 颗、2 颗、3 颗,无论如何都避免不了后手会进入一个非 4 倍数状态,先手必败 ❌
  • N = 17:先手应该拿 1 颗,剩下 16 颗(4 的倍数),后手必败 ✅

# 相关面试题

  • 如果每次可以拿 1~4 颗石子,策略如何变化?
  • 如果游戏变成拿到最后一颗石子的人输,策略如何变化?
  • 如果增加第三名玩家,游戏策略会发生怎样的变化?

这道题属于 博弈论 + 数学归纳法,考察 规律发现、数学推导、策略思维