Задания
Версия для печати и копирования в MS Word
Тип 23 № 87415
i

Ис­пол­ни­тель пре­об­ра­зу­ет число на экра­не. У ис­пол­ни­те­ля есть две ко­ман­ды, ко­то­рые обо­зна­че­ны ла­тин­ски­ми бук­ва­ми.

A.  Вы­честь 2

B.  По­ме­нять ме­ста­ми

Пер­вая ко­ман­да умень­ша­ет число на экра­не на 2, вто­рая ко­ман­да ме­ня­ет раз­ря­ды де­сят­ков и еди­ниц в числе ме­ста­ми, причём она при­ме­ня­ет­ся толь­ко к чис­лам, у ко­то­рых цифра в раз­ря­де еди­ниц мень­ше цифры в раз­ря­де де­сят­ков. Про­грам­ма для ис­пол­ни­те­ля  — это по­сле­до­ва­тель­ность ко­манд.

Сколь­ко су­ще­ству­ет про­грамм, для ко­то­рых при ис­ход­ном числе 57 ре­зуль­та­том яв­ля­ет­ся число 13?

Тра­ек­то­рия вы­чис­ле­ний про­грам­мы  — это по­сле­до­ва­тель­ность ре­зуль­та­тов вы­пол­не­ния всех ко­манд про­грам­мы.

На­при­мер, для про­грам­мы AAB при ис­ход­ном числе 24 тра­ек­то­рия со­сто­ит из чисел 22, 20, 2.

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние на языке Python.

def change(x):

x1 = x // 10

x2 = x % 10

if x1 > x2:

return x2 * 10 + x1

else:

return x

def f(x, y):

if x < y :

return 0

if x == y:

return 1

else:

if x // 10 > x % 10:

return f(x - 2, y) + f(change(x), y)

else:

return f(x - 2, y)

print(f(57, 13))

 

 

 

Ответ: 6.