Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:
— добавить в одну из куч (по своему выбору) 1 камень;
— увеличить количество камней в одной из куч (по своему выбору) в 3 раза.
Игра завершается в тот момент, когда суммарное количество камней в двух кучах становится не менее 155. Победителем считается игрок, сделавший последний ход.
В начальный момент в первой куче было 15 камней, во второй куче — S камней; 1 ≤ S ≤ 139.
Основная волна ЕГЭ по информатике 18.06.2026 – задание №19-21
19. Известно, что Ваня выиграл своим первым ходом после неудачного хода Пети. Укажите минимальное значение S, при котором такая ситуация возможна.
Ответ:
20. Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
— Петя не может выиграть за один ход;
— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Найденные значения запишите в ответе в порядке возрастания.
Ответ:
21. Для игры, описанной в задании 19, найдите наименьшее значение S, при котором одновременно выполняются два условия:
Ответ:
Решение на Python
Решение — 19
|
1 2 3 4 5 6 |
def f(s1, s2,m): if s1+s2 >= 155: return m%2 == 0 if m == 0: return 0 h = [f(s1+1,s2, m-1),f(s1,s2+1, m-1),f(s1*3,s2,m-1),f(s1,s2*3,m-1)] return any(h) if (m-1)%2 == 0 else any(h) print('19)', [s for s in range(1,140) if f(15,s,2)]) |
19) [16, 17, 18, 19, …]
Решение — 20-21
|
1 2 3 4 5 6 7 |
def f(s1, s2,m): if s1+s2 >= 155: return m%2 == 0 if m == 0: return 0 h = [f(s1+1,s2, m-1),f(s1,s2+1, m-1),f(s1*3,s2,m-1),f(s1,s2*3,m-1)] return any(h) if (m-1)%2 == 0 else all(h) print('20)', [s for s in range(1,140) if not f(15,s,1) and f(15,s,3)]) print('21)', [s for s in range(1,140) if not f(15,s,2) and f(15,s,4)]) |
20) [19, 46]
21) [45]
