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

У ис­пол­ни­те­ля При­ба­ви­тель две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:

 

1.  при­бавь 1,

2.  уве­личь стар­шую цифру числа на 1.

 

Пер­вая из них уве­ли­чи­ва­ет число на экра­не на 1, вто­рая уве­ли­чи­ва­ет на 1 стар­шую (левую) цифру числа, на­при­мер число 23 с по­мо­щью такой ко­ман­ды пре­вра­тит­ся в число 33. Если стар­шая цифра числа равна 9, то вто­рая ко­ман­да остав­ля­ет это число не­из­мен­ным. Про­грам­ма для При­ба­ви­те­ля  — это по­сле­до­ва­тель­ность ко­манд. Сколь­ко есть про­грамм, ко­то­рые число 15 пре­об­ра­зу­ют в число 37?

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

Ре­ше­ние.

Обе ко­ман­ды уве­ли­чи­ва­ют ис­ход­ное число. Стар­шая цифра  — 1, сле­до­ва­тель­но, ис­поль­зо­вать ко­ман­ду 2 более двух раз бес­смыс­лен­но. Вы­пи­шем про­грам­мы, в ко­то­рых ко­ман­да 2 ис­поль­зу­ет­ся два раза: 1122, 2211, 1212, 2121, 2112, 1221. Итого 6 про­грамм.

Вы­пи­шем про­грам­мы, в ко­то­рых ко­ман­да 2 ис­поль­зу­ет­ся один раз. Ис­поль­зо­вав эту ко­ман­ду в пер­вой по­зи­ции, мы по­лу­чим из числа 15 число 25, сле­до­ва­тель­но, после этого не­об­хо­ди­мо будет до­пи­сать ещё 12 ко­манд 1 чтобы по­лу­чить число 37. Таким об­ра­зом, по­лу­ча­ем про­грам­мы: 211...1, 121...1, и. т. д. Итого имеем 13 про­грамм (двой­ка по­бы­ва­ла в каж­дой по­зи­ции).

Су­ще­ству­ет всего одна про­грам­ма, в ко­то­рой ко­ман­да 2 не ис­поль­зу­ет­ся: 111....1. Таким об­ра­зом, имеем 6 + 13 + 1  =  20 про­грамм.

 

Ответ: 20.

 

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

def f(x, y):

if x > y:

return 0

if x == y:

return 1

else:

return f(x + 1, y) + f(x + 10, y)

print(f(15, 37))


Аналоги к заданию № 5849: 5913 5945 5977 ... Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 08.07.2013. Вто­рая волна. Ва­ри­ант 801
Раздел кодификатора ФИПИ: 1.6.2 Вы­чис­ли­мость. Эк­ви­ва­лент­ность ал­го­рит­ми­че­ских мо­де­лей