Задание 23. Информатика. ЕГЭ. Поляков-7379

Просмотры: 451
Изменено: 24 ноября 2024

(М. Шагитов) У исполнителя Калькулятор имеются три команды, которые обозначены латинскими буквами:

A. Прибавить \(1\)
B. Прибавить \(4\)
C. Умножить на \(2\)

Программа для исполнителя — это последовательность команд, каждая из которых изменяет число. Требуется найти количество таких программ, которые преобразуют исходное число \(1\) в число \(50\), и при этом траектория вычислений содержит ровно одно из чисел \(8\), \(16\), или \(32\).

Решение:

Python


def f(n, t, d):
    if n > t or n in d:
        return 0
    if n == t:
        return 1
    return f(n + 1, t, d) + f(n + 4, t, d) + f(n * 2, t, d)

print(f(1, 8, ()) * f(8, 50, (16, 32)) + f(1, 16, (8,)) * f(16, 50, (32,)) + f(1, 32, (8, 16)) * f(32, 50, ()))

Ответ: \(6370599\)