Задание 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\)