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

У ис­пол­ни­те­ля Квад­ра­тор две ко­ман­ды. ко­то­рым при­сво­е­ны но­ме­ра:

1.  воз­ве­ди в квад­рат

2.  при­бавь 3

Пер­вая из них воз­во­дит число на экра­не во вто­рую сте­пень, вто­рая уве­ли­чи­ва­ет его на 3.

Со­ставь­те ал­го­ритм по­лу­че­ния из числа 1 числа 25, со­дер­жа­щий не более 5 ко­манд. В от­ве­те за­пи­ши­те толь­ко но­ме­ра ко­манд.

 

(На­при­мер, 12221  — это ал­го­ритм:

воз­ве­ди в квад­рат

при­бавь 3

при­бавь 3

при­бавь 3

воз­ве­ди в квад­рат,

ко­то­рый пре­об­ра­зу­ет число 2 в 169.)

 

Если таких ал­го­рит­мов более од­но­го, то за­пи­ши­те любой из них.

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

Ре­ше­ние.

Не любое число яв­ля­ет­ся квад­ра­том це­ло­го числа, по­это­му, если мы пой­дем от числа 25 к числу 1, тогда од­но­знач­но вос­ста­но­вим про­грам­му. По­лу­чен­ные ко­ман­ды будут за­пи­сы­вать­ся спра­ва на­ле­во.

Число 25 яв­ля­ет­ся квад­ра­том. Если об­ра­зо­ва­ли его, поль­зу­ясь пер­вой ко­ман­дой (25  =  5 · 5), то пред­ше­ству­ю­щим яв­ля­лось число 5. Число 5 с по­мо­щью вто­рой ко­ман­ды по­лу­чи­лось из числа 2, к ко­то­рой дойти от 1, ис­поль­зуя дан­ные ко­ман­ды, не­воз­мож­но.

 

1.  Зна­чит, 25 было по­лу­че­но до­бав­ле­ни­ем трех к числу 22: 22 + 3 = 25 (ко­ман­да 2).

2.  Число 22 не яв­ля­ет­ся квад­ра­том, по­это­му оно по­лу­че­но до­бав­ле­ни­ем трех к числу 19: 19 + 3 = 22 (ко­ман­да 2).

3.  Число 19 не яв­ля­ет­ся квад­ра­том, по­это­му оно по­лу­че­но до­бав­ле­ни­ем трех к числу 16: 19 = 16 + 3 (ко­ман­да 2).

4.  Число 16 яв­ля­ет­ся квад­ра­том числа 4: 16 = 4 · 4 (ко­ман­да 1).

5.  Число 4 можно по­лу­чить воз­ве­де­ни­ем в квад­рат числа 2 (ко­ман­да 1) либо при­бав­ле­ни­ем 3 к числу 1 (ко­ман­да 2). По­сколь­ку ис­ход­ным долж­но быть число 1, а в про­грам­ме долж­но быть не более пяти ко­манд, вы­би­ра­ем вто­рой ва­ри­ант: 4 = 1 + 3 (ко­ман­да 2).

 

Ис­ко­мая по­сле­до­ва­тель­ность ко­манд: 21222.

 

Ответ: 21222.

 

При­ве­дем дру­гое ре­ше­ние.

Воз­во­дить число 1 в квад­рат бес­по­лез­но, по­сколь­ку все равно по­лу­чит­ся 1. Зна­чит, сна­ча­ла ис­поль­зу­ем ко­ман­ду 2 («при­бавь 3»). При этом по­лу­чит­ся число 4. Если ис­поль­зо­вать ко­ман­ду 2 («при­бавь 3») еще раз, то по­лу­чим число 7, ко­то­рое при воз­ве­де­нии в квад­рат даст боль­ше 25. По­это­му ис­поль­зу­ем ко­ман­ду 1 («воз­ве­ди в квад­рат»), по­лу­чим число 16. Те­перь три раза ис­поль­зу­ем ко­ман­ду 2 («при­бавь 3»), и по­лу­чим 16 + 3 + 3 + 3  =  25. Сле­до­ва­тель­но, по­сле­до­ва­тель­ность ко­манд 21222.

 

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

def f(flag, x):

if flag == 1:

return x**2

if flag == 2:

return x + 3

 

x = 1

for flag in range(1, 3):

for flag1 in range(1, 3):

for flag2 in range(1, 3):

for flag3 in range(1, 3):

for flag4 in range(1, 3):

if f(flag, f(flag1, f(flag2, f(flag3, f(flag4, x))))) == 25:

print(flag4, flag3, flag2, flag1, flag)


Аналоги к заданию № 16013: 43670 43770 Все

Источники:
Раздел кодификатора ФИПИ: 1.3.1 Об­ра­бот­ка ин­фор­ма­ции. Ал­го­рит­мы и их свой­ства.