← К задачам
Тяжело · +5Динамическое программированиеЕГЭ задание 21Теория игр

Задание 21: количество проигрышных позиций

Игра «Куча камней»: в куче лежит некоторое количество камней. Игроки ходят по очереди, первым ходит Петя. За один ход игрок добавляет в кучу одно из чисел камней, разрешённых списком moves (например [1, 2] — добавить 1 или 2 камня). Выигрывает игрок, после чьего хода в куче становится S или больше камней (S — заданный порог).

Напишите функцию losing_positions(S, moves), возвращающую отсортированный список ВСЕХ значений s0 из отрезка [0, S-1], из которых игрок, делающий ход, ПРОИГРЫВАЕТ при оптимальной игре соперника (то есть какой бы ход он ни сделал, соперник получает выигрышную позицию).

Пример: losing_positions(7, [1, 2])[1, 4].

def losing_positions(S, moves):
    # ваш код
    pass
Для запуска тестов необходима авторизация.