2302.py
Исполнитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
Прибавь 2.
Умножь на 2.
Первая из них увеличивает число на экране на 2,
вторая увеличивает число на экране в два раза.
Программа для исполнителя – это последовательность команд.
Сколько существует программ,
для которых при исходном числе 1 результатом является число 52,
и при этом траектория вычислений содержит число 18?
Траектория вычислений программы — это последовательность
результатов выполнения всех команд программы.
Например, для программы 121 при исходном числе 3 траектория будет состоять из чисел 5, 10, 12.
"""
Исполнитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
Прибавь 2.
Умножь на 2.
Первая из них увеличивает число на экране на 2,
вторая увеличивает число на экране в два раза.
Программа для исполнителя – это последовательность команд.
Сколько существует программ,
для которых при исходном числе 1 результатом является число 52,
и при этом траектория вычислений содержит число 18?
Траектория вычислений программы — это последовательность
результатов выполнения всех команд программы.
Например, для программы 121 при исходном числе 3 траектория будет состоять из чисел 5, 10, 12.
"""
def F(s, end):
if s == end: return 1
if s > end: return 0
return F(s + 2, end) + F(s * 2, end)
print(F(1, 18) * F(18, 52))
"""
Исполнитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
Прибавь 2.
Умножь на 2.
Первая из них увеличивает число на экране на 2,
вторая увеличивает число на экране в два раза.
Программа для исполнителя – это последовательность команд.
Сколько существует программ,
для которых при исходном числе 1 результатом является число 52,
и при этом траектория вычислений содержит число 18?
Траектория вычислений программы — это последовательность
результатов выполнения всех команд программы.
Например, для программы 121 при исходном числе 3 траектория будет состоять из чисел 5, 10, 12.
"""
def F(s, end):
if s == end: return 1
if s > end: return 0
return F(s + 2, end) + F(s * 2, end)
print(F(1, 18) * F(18, 52))