Задача к ЕГЭ по информатике на тему «количество программ из a в b где траектория вычислений не содержит число(-а)» №1

Исполнитель КЛУБНИЧКА преобразует число на экране. У исполнителя есть две команды:

1. Вычесть 1  ;

2. Поделить на 3  нацело.

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

Сколько существует программ, для которых при исходном числe 43  результатом является число 1  , при этом траектория вычислений не содержит число 8  .

Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы 12  при исходном числе 11  траектория будет состоять из чисел 10,3  .

Рекурсия:

def f(x, y):
    if x < y or x == 8:
        return 0
    elif x == y:
        return 1
    else:
        return f(x - 1, y) + f(x // 3, y)

print(f(43, 1))

 

Динамика:

a = [0] * (43 * 3 + 3)
a[43] = 1
for i in range(42, 0, -1):
    a[i] = a[i + 1] + a[i * 3] + a[i * 3 + 1] + a[i * 3 + 2]
    if i == 8:
        a[i] = 0
print(a[1])

Ответ: 189
Оцените статью
Я решу все!