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

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

1. раз­де­ли на 2

2.  вычти 1

Пер­вая из них умень­ша­ет число на экра­не в 2 раза, вто­рая умень­ша­ет его на 1. Ис­пол­ни­тель ра­бо­та­ет толь­ко с на­ту­раль­ны­ми чис­ла­ми. Со­ставь­те ал­го­ритм по­лу­че­ния из чиcла 65 числа 4, со­дер­жа­щий не более 5 ко­манд. В от­ве­те за­пи­ши­те толь­ко но­ме­ра ко­манд.

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

раз­де­ли на 2

вычти 1

раз­де­ли на 2

раз­де­ли на 2

вычти 1,

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

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

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

Ре­ше­ние.

По­сколь­ку Де­ли­тель ра­бо­та­ет толь­ко с на­ту­раль­ны­ми чис­ла­ми и число 65  — не­чет­ное. Для того, чтобы по­лу­чить чет­ное число ис­поль­зу­ем ко­ман­ду 2 (вы­честь 1). Из числа 64 число 4 можно по­лу­чить, вы­пол­нив ко­ман­ду 1 че­ты­ре раза, сле­до­ва­тель­но, из числа 65 можно по­лу­чить число 4 по­сле­до­ва­тель­но­стью ко­манд 21111.

 

Ответ: 21111.

 

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

def f(flag, x):

if flag == 1:

return x / 2

if flag == 2:

return x - 1

x = 65

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))))) == 4:

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


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

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