№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))

← К списку шпаргалок