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

Ис­пол­ни­тель пре­об­ра­зу­ет число на экра­не.

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

A.  Вы­честь 1.

B.  Умно­жить на 2.

C.  Умно­жить на 3.

Про­грам­ма для ис­пол­ни­те­ля  — это по­сле­до­ва­тель­ность ко­манд. На­при­мер, про­грам­ма BAC при ис­ход­ном числе 2 по­сле­до­ва­тель­но по­лу­чит числа 4, 3, 9. Сколь­ко су­ще­ству­ет про­грамм, ко­то­рые пре­об­ра­зу­ют ис­ход­ное число 3 в число 15 и при этом не со­дер­жат двух ко­манд A под­ряд?

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

Ре­ше­ние.

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

def f(start, end, k):

if start > end + 1:

return 0

if start == end:

return 1

else:

if k == 1:

return f(start * 2, end, k - 1) + f(start * 3, end, k - 1)

else:

return f(start - 1, end, k + 1) + f(start * 2, end, k) + f(start * 3, end, k)

print(f(3, 15, 0))

 

Ответ: 6.

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

def f(старт,финиш,ко­ман­да):

if старт > финиш+1:

return 0

if старт == финиш:

return 1

return f(старт*2,финиш,'B')+f(старт*3,финиш,'C')+(f(старт-1,финиш,'A') if ко­ман­да != 'A' else 0)

print(f(3,15,''))


Аналоги к заданию № 63039: 63072 Все