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

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

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

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

— если число N де­лит­ся на 7, то к вось­ме­рич­ной за­пи­си числа спра­ва до­пи­сы­ва­ют­ся его по­след­ние две цифры;

— если число N не де­лит­ся на 7, то оста­ток от де­ле­ния числа N на 7 умно­жа­ет­ся на семь, а затем по­лу­чен­ный ре­зуль­тат в вось­ме­рич­ном виде при­пи­сы­ва­ет­ся слева к вось­ме­рич­ной за­пи­си.

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

На­при­мер, для ис­ход­но­го числа 2110  =  258 ре­зуль­та­том яв­ля­ет­ся число 25258  =  136510, для ис­ход­но­го числа 2210  =  268 ре­зуль­та­том яв­ля­ет­ся число 7268  =  47010.

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

В от­ве­те за­пи­ши­те это число в де­ся­тич­ной си­сте­ме счис­ле­ния.

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

Ре­ше­ние.

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

otv = c = 10**10

for n in range(20,2000):

s = oct(n)[2:]

if n%7==0:

s = s + s[-2:]

else:

s = oct((n%7)*7)[2:] + s

r = int(s,8)

if r > 500 and c > r:

otv = n

c = r

print(otv)

 

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

f = lambda n: oct(7*v)[2:] + oct(n)[2:] if (v:=n%7) else (t:=oct(n)[2:]) + t[-2:]

spi = sorted([(v, n) for n in range(21, 2000) if (v:=int(f(n), 8)) > 500])

print(spi[0][1])

 

Ответ: 57.

Источник: Проб­ный ЕГЭ Санкт-Пе­тер­бург, 20.02.2025. Ва­ри­ант 2