№23
Основная волна 2026
Подсчёт количества программ
Основная волна 2026
Условие
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены номерами:
1. Прибавь 1
2. Поменяй местами
Первая из этих команд увеличивает число на экране на 1. Вторая команда может применяться только к числу, у которого цифра разряда десятков по значению меньше цифры, стоящей в разряде единиц, и действует, заменяя число на экране числом, в котором цифры двух младших разрядов поменяны местами. Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе 110 результатом является число 154?
Решение:
def f(x, y):
if x >= y: return x == y
if int(str(x)[1]) < int(str(x)[2]):
return f(x+1, y) + f(int(str(x)[0] + str(x)[2] + str(x)[1]), y)
else:
return f(x+1, y)
print(f(110, 154))