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

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

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

2.  Если число N чётное, то к дво­ич­ной за­пи­си слева до­пи­сы­ва­ют­ся цифры 11.

В про­тив­ном слу­чае (число N нечётное) к дво­ич­ной за­пи­си слева до­пи­сы­ва­ет­ся цифра 1, а спра­ва  — цифры 10.

3.  Ре­зуль­та­том ра­бо­ты ал­го­рит­ма ста­но­вит­ся де­ся­тич­ная за­пись по­лу­чен­но­го числа R.

 

При­мер.  Дано число N  =  13. Ал­го­ритм ра­бо­та­ет сле­ду­ю­щим об­ра­зом.

1.  Стро­им дво­ич­ную за­пись: 1310  =  11012.

2.  Число 13 нечётно. До­пи­сы­ва­ем 1 слева и 10 спра­ва, по­лу­ча­ем 11101102  =  11810.

3.  Ре­зуль­тат ра­бо­ты ал­го­рит­ма R  =  118.

Ука­жи­те мак­си­маль­ное число R, ко­то­рое может быть ре­зуль­та­том ра­бо­ты дан­но­го ал­го­рит­ма, при усло­вии, что N при­над­ле­жит от­рез­ку [234 567 890; 567 891 234].

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

Ре­ше­ние.

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

otv = []

for n in range (567_891_234, 567_000_000, -1):

s = bin(n)[2:]

if n % 2 == 0:

s = '11' + s

else:

s = '1' + s + '10'

r = int (s,2)

otv.append(r)

print(max(otv))

 

Ответ: 6566532230.

 

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

necet = int('1' + bin(567891233)[2:] + '10', 2)

cet = int(bin(567891234)[2:] + '11', 2)

print(max(necet,cet))


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

Источник: Стат­Град: Тре­ни­ро­воч­ная ра­бо­та 24.10.2024 ИН2410101