Алгоритмы и рекурсия · тема 4 из 8
Игры: «есть ход» и «любой ход»
Стратегии · ЕГЭ 19–21
Одна идея — один пример
Выигрыш за один ход означает: существует ход, после которого достигнута цель. Это any(...). Для утверждения «после любого ответа соперника» нужен all(...).
s = 8
print(any(x >= 15 for x in (s + 1, s * 2)))
Теперь решаем самостоятельно
Не путай выигрыш в один ход с выигрышной стратегией за несколько ходов. В последней проверяется чередование своего выбора и всех ответов соперника.
Вводится порог t от 3 до 100. Из позиции s разрешены +1 и ×2. Выведи минимальное положительное s < t, из которого можно выиграть за один ход, достигнув числа не меньше t.
Пример входных данных и результата
Ввод:
15
Вывод:
8
Черновик и файл программы
Черновик сохраняется в этом браузере. Ctrl/⌘ + S — сохранить.
Результаты проверки
Напиши решение и нажми «Проверить код». Данные каждого теста подаются автоматически.
Нужна подсказка?
Перебери s по возрастанию, проверь оба результата хода.
На чём легко ошибиться
Позиции s >= t уже терминальные и не входят в поиск.
Разобрать один из способов решения
Сначала попробуй написать код сам. Сравни алгоритм, затем закрой разбор и воспроизведи решение без подсказки.
t = int(input())
for s in range(1, t):
if any(x >= t for x in (s + 1, s * 2)):
print(s)
breakТесты проверяют результат на учебных примерах, но не доказывают правильность для любого входа. Объясни каждую строку и предложи собственный тест.
Перед следующей темой
Назови входные данные, результат, основной шаг алгоритма и граничный случай. Если использовал разбор, напиши решение заново. Для свободных экспериментов открой Python онлайн.
Все темы этого курса
Программа подготовлена по темам банка «Академии С». Официальные документы: ФИПИ. Справочник языка: Python. Не все экзаменационные задачи нужно решать программой: например, работа в таблицах требует освоения табличного редактора.