Все задачи №13
№13

две команды, «содержит»

Исполнитель преобразует число на экране. У исполнителя две команды: A. Вычти 2 B. Найди целую часть от деления на 2 Сколько существует программ, для которых при исходном числе 48 результатом является число 2, и при этом траектория вычислений содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.

Источник: ФИПИ (Пересдача 03.07.2025), № 23567

Ответвпиши то, что вывела программа
Показать разбор
  1. Команды идут вниз, поэтому бери шаблон с отсечкой x < end.
  2. Сложи ответы по всем командам: −2 и деление нацело на 2.
  3. Траектория обязана пройти через 16, поэтому раздели путь на два куска: из 48 в 16 и из 16 в 2.
  4. Перемножь число программ в кусках и выведи результат.
def f(x, end):
    if x == end: return 1
    if x < end: return 0
    return f(x - 2, end) + f(x // 2, end)

print(f(48, 16) * f(16, 2))