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

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

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

1.  При­ба­вить 1.

2.  При­ба­вить 2.

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

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

Пер­вая ко­ман­да уве­ли­чи­ва­ет число на экра­не на 1, вто­рая уве­ли­чи­ва­ет его на 2, тре­тья умно­жа­ет на 2, четвёртая умно­жа­ет на 3.

Про­грам­ма для ис­пол­ни­те­ля  — это по­сле­до­ва­тель­ность ко­манд. На­при­мер, если в на­чаль­ный мо­мент на экра­не на­хо­дит­ся число 1, то про­грам­ма 213 по­сле­до­ва­тель­но пре­об­ра­зу­ет его в 3, 4, 8.

Сколь­ко су­ще­ству­ет про­грамм, ко­то­рые пре­об­ра­зу­ют ис­ход­ное число 1 в число 22 и при этом не со­дер­жат двух по­сле­до­ва­тель­ных ко­манд сло­же­ния и двух по­сле­до­ва­тель­ных ко­манд умно­же­ния?

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

Ре­ше­ние.

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

def f(start, end, fl1, fl2):

if start == end:

return 1

if start > end:

return 0

if start < end:

if fl1 == False:

return f(start * 2, end, True, False) + f(start * 3, end, True, False)

if fl2 == False:

return f(start + 1, end, False, True) + f(start + 2, end, False, True)

else:

return f(start + 1, end, False, True) + f(start + 2, end, False, True) + f(start * 2, end, True, False) + f(start * 3, end, True, False)

print(f(1, 22, True, True))

Таким об­ра­зом, ко­ли­че­ство про­грамм, удо­вле­тво­ря­ю­щих усло­вию за­да­чи и вы­ве­ден­ное на экран, равно 11.

 

Ответ: 11.

 

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

def f(x,y,s):

if x == y and not "++" in s and not "**" in s:

return 1

if x > y:

return 0

return f(x+1,y,s+'+') + f(x+2,y,s+'+') + f(x*2,y,s+'*') + f(x*3,y,s+'*')

 

print(f(1,22,''))

 

При­ведём ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

def f(a,b,c):

if a==b:

return 1

if a>b:

return 0

else:

if c=='c':

return f(a*2,b,'u')+f(a*3,b,'u')

if c=='u':

return f(a+1,b,'c')+f(a+2,b,'c')

else:

return f(a*2,b,'u')+f(a*3,b,'u')+f(a+1,b,'c')+f(a+2,b,'c')

print(f(1,22,'n'))


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