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

Просмотры: 245
Изменено: 22 ноября 2024

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

  1. Прибавить \(5\)
  2. Прибавить \(4\)
  3. Умножить на \(3\)
Первая команда увеличивает число на экране на \(5\), вторая увеличивает его на \(4\), третья умножает его на \(3\).
Программа для Вычислителя — это последовательность команд.
Сколько существует программ, которые преобразуют исходное число \(2\) в число \(30\) и при этом траектория вычислений программы содержит число \(6\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд. Например, для программы \(132\) при исходном числе \(1\) траектория будет состоять из чисел \(6\), \(18\), \(22\)

Решение:

Python


def f(n, target):
    if n == target:
        return 1
    if n > target:
        return 0
    return f(n+5, target) + f(n+4, target) + f(n*3, target)

print(f(2, 6) * f(6, 30))

Ответ: \(16\)