Задания 19-21. Информатика. ЕГЭ. Статград. 28.01.2025-1
- Просмотры: 1109
- Изменено: 2 февраля 2025
19
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. Если количество камней в куче делится на целое
Например, если в куче
Игра завершается, когда количество камней в куче становится не более
В начале игры в куче было
20
Для игры, описанной в задании 19, найдите два наименьших значения
21
Для игры, описанной в задании 19, найдите минимальное значение
Решение:
Python
def moves(h):
k = [x for x in range(2, 10) if h % x == 0]
if k:
return [h - x for x in k]
else:
h -= 1
k = [x for x in range(2, 10) if h % x == 0]
return [h - x for x in k]
def game_over(pos):
return pos < 16
def win1(pos):
return not game_over(pos) and any(game_over(m) for m in moves(pos))
def lose1(pos):
return all(win1(m) for m in moves(pos))
def win2(pos):
return not win1(pos) and any(lose1(m) for m in moves(pos))
def lose2(pos):
return all(win1(m) or win2(m) for m in moves(pos)) \
and any(win2(m) for m in moves(pos))
z19 = [S for S in range(16, 1000) if lose1(S)]
z20 = [S for S in range(16, 1000) if win2(S)]
z21 = [S for S in range(16, 1000) if lose2(S)]
print(min(z19))
print(*z20[:2])
print(min(z21))
Ответ: