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

вычитание и деление на 3

Исполнитель преобразует число на экране. У исполнителя три команды: A. Вычесть 1 B. Вычесть 4 C. Найти целую часть от деления на 3 Сколько существует программ, для которых при исходном числе 19 результатом является число 2, при этом траектория вычислений не содержит числа 7 и содержит число 13? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 22 траектория состоит из чисел 7, 3, 2.

Источник: ФИПИ (Демо), № 23761

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

print(f(19, 13) * f(13, 2))