Автор | Сообщение |
|
Отправлено: 17.10.23 23:04. Заголовок: 3083
Почему в 20 только один ответ - 33? Почему нельзя взять 17? Первый игрок умножает 17 на 2, получает 34, второй игрок не может сделать ход *2, *3 т.к. условие задачи не превышает 60, поэтому только +1, количество становится 35, первый игрок вторым ходом добавляет 1 камень и итог 36. Или я что-то упускаю?
|
|
|
Ответов - 1
[только новые]
|
|
|
Отправлено: 22.10.23 17:17. Заголовок: Потому что первый иг..
Потому что первый игрок умен и помешает второму: он не сделает проигрышный ход, а сходит иначе: 17 --> 17+1 = 18 из позиции 18 второму игроку не выиграть никаким ходом. Вот код, который решает эти задачи: def f(a): return (a+1),(a*2),(a*3) gp={c for c in range(61)} sp={c for c in range(1,36)} wp={c for c in range(36,61)} lp={c for c in range(61,200)} v={c for c in gp if any(t in wp for t in f(c))}; sp-=v; gp-=v; lp|=v; v={c for c in sp if all(t in lp for t in f(c))}; sp-=v; gp-=v; wp|=v;print(sorted(v)) v={c for c in gp if all(t in lp for t in f(c))}; sp-=v; gp-=v; wp|=v; v={c for c in sp if any(t in wp for t in f(c))}; sp-=v; gp-=v; lp|=v;print(sorted(v)) v={c for c in gp if any(t in wp for t in f(c))}; sp-=v; gp-=v; lp|=v; v={c for c in sp if all(t in lp for t in f(c))}; sp-=v; gp-=v; wp|=v; print(sorted(v))
|
|
|