Задание 23. Информатика. 2022-6
- Просмотры: 85
- Изменено: 22 ноября 2024
Исполнитель Вычислитель преобразует число, записанное на экране.
У исполнителя есть две команды, которым присвоены номера:
Первая команда уменьшает число на экране на \(1\), вторая число на экране на число, равное целой части от деления числа на экране на \(2\). Программа для Вычислителя — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число \(31\) в число \(2\) и при этом траектория вычислений программы содержит число \(12\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы \(121\) при исходном числе \(18\) траектория будет состоять из чисел \(17\), \(8\), \(7\).
Решение:
Python
def f(n, target):
if n == target:
return 1
elif n < target:
return 0
else:
return f(n-1, target) + f(n//2, target)
print(f(31, 12)*f(12,2))
Ответ: 171