Исполнитель преобразует число на экране. У исполнителя есть четыре команды, которым присвоены номера:
1. Увеличь на 3
2. Увеличь на 5
3. Умножь на 2
4. Умножь на 3
Программа для исполнителя – это последовательность команд.
Сколько различных результатов можно получить при исходном числе 35 в ходе исполнения программы, содержащей ровно 18 команд, если известно, что нельзя повторять команду с тем же арифметическим действием, что и у сделанной на предыдущем шаге (после умножения нельзя повторять умножение, после сложения нельзя повторять сложение)?
# Множество различных результатов работы программы
s = set()
# c - номер команды на предыдущем шаге
# k - счётчик количества совершенных команд
def f(a, c=0, k=0):
if k == 18:
s.add(a)
return
if c != 1 and c != 2:
f(a + 3, 1, k + 1)
f(a + 5, 2, k + 1)
if c != 3 and c != 4:
f(a * 2, 3, k + 1)
f(a * 3, 4, k + 1)
f(35)
print(len(s))
Ответ: 90924