Задание 23. Информатика. 2022-11
- Просмотры: 63
- Изменено: 24 ноября 2024
Исполнитель Вычислитель преобразует число, записанное на экране.
У исполнителя есть три команды, которым присвоены номера:
Первая из них увеличивает число на экране на \(3\), вторая увеличивает его на \(4\), третья умножает его на \(3\). Программа для Вычислителя — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число \(1\) в число \(30\) и при этом траектория вычислений программы содержит число \(7\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы \(132\) при исходном числе \(2\) траектория будет состоять из чисел \(5\), \(15\), \(19\).
Решение:
Python
def f(n, target):
if n == target:
return 1
elif n > target:
return 0
else:
return f(n+3, target) + f(n+4, target) + f(n*3, target)
print(f(1, 7)*f(7, 30))
Ответ: 58