OpenFIPI 2.0

23

5

Ac8F45

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

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

A. Вычесть 1

B. Вычесть 2

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

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

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

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

180

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

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

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