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

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

1  . Прибавить 1

2  . Сделать нечётное

Первая из этих команд увеличивает число x  на экране на 1  , вторая переводит число x  в число 2x + 1  . Например, вторая команда переводит число 10  в число 21  . Программа для исполнителя ГО – это последовательность команд.

Сколько существует таких программ, которые число 1  преобразуют в число 27  , причём траектория вычислений не содержит число 26  ?

Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.

Рекурсия:

def f(x, y):
    if x > y or x == 26:
        return 0
    elif x == y:
        return 1
    else:
        return f(x + 1, y) + f(x * 2 + 1, y)

print(f(1, 27))

 

Динамика:

a = [0] * 28
a[1] = 1
for i in range(2, 28):
    a[i] = a[i - 1]
    if i % 2 == 1:
        a[i] += a[i // 2]
    if i == 26:
        a[i] = 0

print(a[27])

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