Задание 23. Информатика. Фоксфорд 2023-4

Просмотры: 126
Изменено: 23 ноября 2024

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

  1. Прибавить \(1\)
  2. Умножить на \(2\)
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе \(1\) результатом является число \(54\) и при этом траектория вычислений программы содержит число \(14\) и не содержит \(22\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд. Например, для программы \(121\) при исходном числе \(5\) траектория будет состоять из чисел \(6\), \(12\), \(13\).

Решение:

Python


def f(n, target):
    if n == target:
        return 1
    elif n > target or n == 22:
        return 0
    return f(n+1, target) + f(2*n, target)

print(f(1, 14) * f(14, 54))

Ответ: \(208\)