OpenFIPI 2.0

23

5

B17D75

Исполнитель преобразует число на экране.

У исполнителя есть три команды, которые обозначены латинскими буквами:

A. Вычесть 1

B. Вычесть 4

C. Найти целую часть от деления на 3

Программа для исполнителя – это последовательность команд.

Сколько существует программ, для которых при исходном числе 19 результатом является число 2, при этом траектория вычислений не содержит числа 7 и содержит 13?

Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы СBА при исходном числе 22 траектория состоит из чисел 7, 3, 2.

68

def f(n, b):
    if n == b:  # попали
        return 1
    if n == 7:  # не содержит 7
        return 0
    if n < b:  # перепрыгнули
        return 0
    # недопрыгнули
    return f(n - 1, b) + f(n - 4, b) + f(n // 3, b)

# содержит 10
print(f(19, 13) * f(13, 2))

Просмотреть отправленные ответы B17D75