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

Каж­дое из­де­лие, из­го­тов­лен­ное на пред­при­я­тии, по­лу­ча­ет уни­каль­ный код, со­сто­я­щий из 22 сим­во­лов. Каж­дый сим­вол кода может быть ла­тин­ской бук­вой (толь­ко строч­ной), де­ся­тич­ной циф­рой или спе­ци­аль­ным сим­во­лом из до­пол­ни­тель­но­го на­бо­ра. Ис­поль­зу­ет­ся по­сим­воль­ное ко­ди­ро­ва­ние, каж­дый сим­вол ко­ди­ру­ет­ся оди­на­ко­вым ми­ни­маль­но воз­мож­ным чис­лом бит, а для хра­не­ния каж­до­го кода в целом от­во­дит­ся оди­на­ко­вое ми­ни­маль­но воз­мож­ное число байт.

Из­вест­но, что для хра­не­ния спис­ка из 4000 кодов вы­де­ле­но не более 100 Кбайт. Какое наи­боль­шее ко­ли­че­ство спе­ци­аль­ных сим­во­лов может вхо­дить в до­пол­ни­тель­ный набор сим­во­лов?

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

Ре­ше­ние.

Имеем: M  =  26 + 10 + x, где M  — мощ­ность ал­фа­ви­та, x  — ко­ли­че­ство спец. сим­во­лов. Вес од­но­го сим­во­ла ал­фа­ви­та в битах можно найти по фор­му­ле M  =  2i. По усло­вию за­да­чи N  =  22, n  =  4000. Сле­до­ва­тель­но, объём од­но­го кода по­лу­ча­ет­ся: V1  =  i · N. Весь объём: V  =  n · V1  =  n · i · N  ⩽  100 Кбайт. Так как n · i · N  ⩽  819200 бит, по­лу­ча­ем, что

i = дробь: чис­ли­тель: 819200, зна­ме­на­тель: nN конец дроби = 9 бит.

Итак, M  =  2i  =  512, сле­до­ва­тель­но, 26 + 10 + x  =  512, x  =  476.

 

Ответ: 476.

 

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

for k in range(100,1,-1): # длина кода сим­во­ла в битах

bits = k*22 # длина се­рий­но­го но­ме­ра в битах

bytes = bits//8

if bits%8 != 0: bytes+=1 # длина се­рий­но­го но­ме­ра в бай­тах

if bytes*4000 <= 100*1024: # если 4000 но­ме­ров за­ни­ма­ют не более 100К:

print(2**k-26-10)

break

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