Задание 23. Информатика. Апробация 10.03.2023
- Просмотры: 568
- Изменено: 25 ноября 2024
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:
A. Вычти \(2\)
B. Найди целую часть от деления на \(2\)
Первая команда уменьшает число на экране на \(2\), вторая заменяет число на экране на целую часть от деления числа на \(2\).
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе \(40\) результатом является число \(2\) и при этом траектория вычислений программы содержит число \(10\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд. Например, для программы \(ABB\) при исходном числе \(13\) траектория будет состоять из чисел \(11\), \(5\), \(2\)
Решение:
Python
def F(n, target):
if n < target:
return 0
if n == target:
return 1
return F(n - 2, target) + F(n // 2, target)
print(F(40, 10) * F(10, 2))
Ответ: \(40\)