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

На вход ал­го­рит­ма подаётся на­ту­раль­ное число N. Ал­го­ритм стро­ит по нему новое число R сле­ду­ю­щим об­ра­зом.

1.  Стро­ит­ся дво­ич­ная за­пись числа N.

2.  Далее эта за­пись об­ра­ба­ты­ва­ет­ся по сле­ду­ю­ще­му пра­ви­лу:

а)  если число N де­лит­ся на 3, то к этой за­пи­си до­пи­сы­ва­ют­ся три по­след­ние дво­ич­ные цифры;

б)  если число N на 3 не де­лит­ся, то оста­ток от де­ле­ния умно­жа­ет­ся на 3, пе­ре­во­дит­ся в дво­ич­ную за­пись и до­пи­сы­ва­ет­ся в конец числа.

По­лу­чен­ная таким об­ра­зом за­пись яв­ля­ет­ся дво­ич­ной за­пи­сью ис­ко­мо­го числа R.

На­при­мер, для ис­ход­но­го числа 1210  =  11002 ре­зуль­та­том яв­ля­ет­ся число 11001002  =  10010, а для ис­ход­но­го числа 410  =  1002 ре­зуль­та­том яв­ля­ет­ся число 100112  =  1910.

Ука­жи­те ми­ни­маль­ное число R, боль­шее 151, ко­то­рое может быть по­лу­че­но с по­мо­щью по­лу­чен­но­го ал­го­рит­ма. В от­ве­те за­пи­ши­те это число в де­ся­тич­ной си­сте­ме счис­ле­ния.

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

Ре­ше­ние.

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

a = set()

for n in range(1, 150):

s = bin(n)[2:]

if n % 3 == 0:

s += s[len(s) - 3:]

if n % 3 != 0:

k = (n % 3) * 3

s1 = bin(k)[2:]

s += s1

r = int(s, 2)

if r > 151:

a.add(r)

print(min(a))

В ре­зуль­та­те вы­пол­не­ния про­грам­мы по­лу­ча­ем ответ  — 163.

 

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

R = []

for n in range(1, 10000):

s = f'{n:b}'

if n % 3 == 0:

s += s[-3:]

else:

x = (n % 3) * 3

s += f'{x:b}'

r = int(s, 2)

if r > 151:

R.append(r)

 

print(min(R))


Аналоги к заданию № 59683: 59738 60247 Все

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2024 по ин­фор­ма­ти­ке