Teacher & coder

Задача № 180

Исполнитель преобразует число на экране. У исполнителя есть три команды:

  1. Прибавить 1
  2. Прибавить 2
  3. Умножить на 3

Программа для исполнителя - это последовательность команд.

Сколько существует программ, для которых при исходном числе 2 результатом является число 18, и при этом траектория вычислений содержит число 9 и не содержит числа 16?

Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 4 траектория будет состоять из чисел 12, 14, 15.

Можно скопировать и вставить все ответы сразу
ЕГКР 27 апреля 2024 года (Московский пробник)
Прокрути, чтобы прочитать решение задачи
Ты уверен, что хочешь это сделать?
Удачного чтения!

Решение

Код из видео

# функция, которая считает
# сколько есть программ, преобразующих число a в число b
def f(a, b):
    # если исходное число равно результату, есть один способ преобразовать
    if a == b: return 1
    # большее число в меньшее преобразовать нельзя
    if a > b: return 0
    # по условию число 16 нужно избегать
    if a == 16: return 0
    # команды исполнителя
    return f(a+1, b) + f(a+2, b) + f(a*3, b)

# преобразуем 2 в 9, затем 9 в 18
print(f(2, 9) * f(9, 18))

Артём Зинкин

Лучше не гуглить и подумать самостоятельно. Тест можно пройти несколько раз :)
Чтобы поделиться задачей с коллегами или друзьями, отправьте им ссылку :)
Забыл сказать, что у этой задачи есть подробное решение. Посмотрите его :)
Попробуйте решить эту задачу сами и посмотрите наши разборы похожих задач :)
Кстати, на ЕГЭ тоже нельзя копировать :)
Этим материалом удобно поделиться по прямой ссылке :)