Задание 23. Информатика. Статград 2023-2-1
- Просмотры: 67
- Изменено: 20 ноября 2024
Исполнитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
Первая команда увеличивает число на экране на \(1\), вторая умножает его на \(2\).
Программа для исполнителя — это последовательность команд. Например, если в начальный момент на экране находится число \(1\), то программа \(212\) последовательно преобразует его в \(2\), \(3\), \(6\).
Сколько существует программ, для которых преобразуют исходное число \(1\) в число \(14\), и при этом никакая команда не повторяется более двух раз подряд?
Решение:
Python
def F(n, target, com1, com2):
if com1 > 2 or com2 > 2 or n > target:
return 0
if n == target:
return 1
return F(n+1, target, com1+1, 0) + F(2*n, target, 0, com2+1)
print(F(1, 14, 0, 0))
Ответ: \(6\)