Исполнитель Калькулятор преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами.
Первая команда уменьшает число на экране на \(3,\) вторая команда делит число на \(2\) (нецелый результат округляется до ближайшего целого в большую сторону). Программа для исполнителя – это последовательность команд.
Сколько существует таких программ, которые исходное число \(120\) преобразуют в число \(20,\) при этом траектория вычислений не содержит чисел \(35\) и \(51?\)
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы АВA при исходном числе \(100\) траектория состоит из чисел \(97,\) \(49,\) \(46.\)
Решение:
Python
from math import ceil
def f(n, targ, deny):
if n in deny:
return 0
if n <= targ:
return n == targ
return f(n - 3, targ, deny) + f(ceil(n / 2), targ, deny)
print(f(120, 20, (35, 51)))
Ответ: \(10\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене