Исполнитель преобразует число, записанное на экране. У исполнителя есть команды, которым присвоены номера:
1. Прибавить
2. Умножить на и прибавить
Первая команда увеличивает число на экране на вторая — увеличивает число в
раза и добавляет
Программа для исполнителя — это последовательность команд.
Сколько различных результатов можно получить из исходного числа после выполнения программы, содержащей ровно
команд?
Решение 1 (Рекурсия)
ans = set()
def f(start, com):
global ans
if com == 0:
ans.add(start)
return 0
f(start + 2, com - 1)
f(start * 2 + 1, com - 1)
f(6, 12)
print(len(ans))
Решение 2 (Динамика)
ans = set()
ans.add(6)
for cnt in range(12):
can_get = set()
for i in ans:
can_get.add(i + 2)
can_get.add(i * 2 + 1)
ans = can_get
print(len(ans))