Это классическая позиционная игра. Назовём проигрышными позиции, из которых проигрывает игрок, чей ход; выигрышными — из которых выигрывает.
- $S=0$: ход делать нельзя (предыдущий взял последний камень) → текущий проиграл. Позиция проигрышная.
- $S=1$: можно взять 1 (выиграть) → выигрышная.
- $S=2$: взять 2 → выигрышная.
- $S=3$: после хода остаётся 1 или 2 — выигрышная для противника. Проигрышная.
- $S=4$: можно взять 1, оставив 3 (проигрышная для противника) → выигрышная.
- $S=5$: взять 2, оставить 3 → выигрышная.
- $S=6$: остаётся 4 или 5 — обе выигрышные для противника. Проигрышная.
Прослеживается закономерность: проигрышные позиции — те, где $S$ кратно 3.
$S=10$: $10 = 9 + 1$. Первый берёт 1 камень, оставляя 9 (кратно 3 — проигрышная для второго). Первый игрок выигрывает.
Поправка к ответу: при $S=10$ выигрывает первый. Стратегия — поддерживать кратность 3 у противника.
def winner(s):
return 1 if s % 3 != 0 else 2
print(winner(10)) # 1