Задача к ЕГЭ по информатике на тему «Количество программ из A в B где траектория вычислений N команда» №2

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

1. Прибавь 4

2. Прибавь 7

3. Раздели нацело на 2

Первая команда увеличивает число на экране на 4, вторая увеличивает его на 7, третья делит на 2 нацело (остаток отбрасывается). Программа для исполнителя – это последовательность команд. Сколько существует программ, которые состоят из 10 команд и при исходном числе 1 результатом является 1?

Решение 1

def f(a, c):
    if c == 10:
        return a == 1
    return f(a + 4, c + 1) + f(a + 7, c + 1) + f(a // 2, c + 1)

print(f(1, 0))

Решение 2

a = [1]
for i in range(10):
    n = len(a)
    for j in range(n):
        l = a.pop(0)
        a.append(l + 4)
        a.append(l + 7)
        a.append(l // 2)
print(a.count(1))

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