Задание 23. Информатика. 2023-4
- Просмотры: 355
- Изменено: 24 ноября 2024
Исполнитель Увеличитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
Первая команда уменьшает число на экране на \(1\), вторая заменяет число на экране на целую часть от деления числа на \(2\).
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе \(60\) результатом является число \(1\), и при этом траектория вычислений содержит число \(20\) и не содержит \(4\)?
Траектория вычисления программы — это последовательность результатов выполнения всех команд программы. Например, для программы \(122\) при исходном числе \(10\) траектория состоит из чисел \(9\), \(4\), \(2\).
Решение:
Python
def f(n, target):
if n == target:
return 1
if n < target or n == 4:
return 0
return f(n-1, target) + f(n // 2, target)
print(f(60, 20)*f(20, 1))
Ответ: \(1760\)