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

«содержит» и «не содержит»

Исполнитель преобразует число на экране. У исполнителя три команды: A. Прибавить 1 B. Прибавить 3 C. Умножить на 2 Сколько существует программ, для которых при исходном числе 2 результатом является число 25, и при этом траектория вычислений содержит число 15 и не содержит число 7? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 7 траектория состоит из чисел 14, 17, 18.

Источник: ФИПИ (Досрочная волна), № 28764

Ответвпиши то, что вывела программа
Показать разбор
  1. Команды идут вверх, поэтому бери шаблон с отсечкой x > end.
  2. Строку x == end оставь первой, а под ней запрети число 7: верни 0.
  3. Сложи ответы по всем командам: +1, +3 и ×2.
  4. Траектория обязана пройти через 15, поэтому раздели путь на два куска: из 2 в 15 и из 15 в 25.
  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 + 3, end) + f(x * 2, end)

print(f(2, 15) * f(15, 25))