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

На пред­при­я­тии каж­дой из­го­тов­лен­ной де­та­ли при­сва­и­ва­ют се­рий­ный номер, со­сто­я­щий из 246 сим­во­лов. В базе дан­ных для хра­не­ния каж­до­го се­рий­но­го но­ме­ра от­ве­де­но оди­на­ко­вое и ми­ни­маль­но воз­мож­ное число байт. При этом ис­поль­зу­ет­ся по­сим­воль­ное ко­ди­ро­ва­ние се­рий­ных но­ме­ров, все сим­во­лы ко­ди­ру­ют­ся оди­на­ко­вым и ми­ни­маль­но воз­мож­ным чис­лом бит. Из­вест­но, что для хра­не­ния 703 569 се­рий­ных но­ме­ров до­ступ­но не более 77 Мбайт па­мя­ти. Опре­де­ли­те мак­си­маль­но воз­мож­ную мощ­ность ал­фа­ви­та, ис­поль­зу­е­мо­го для за­пи­си се­рий­ных но­ме­ров. В от­ве­те за­пи­ши­те толь­ко целое число.

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

Ре­ше­ние.

По­счи­та­ем мак­си­маль­ное ко­ли­че­ство байт от­ве­ден­ных под хра­не­ние од­но­го се­рий­но­го но­ме­ра:

 дробь: чис­ли­тель: 77 Мбайт , зна­ме­на­тель: 703 569 конец дроби = дробь: чис­ли­тель: 80 740 352 байт , зна­ме­на­тель: 703 569 конец дроби \approx 114,76 байт.

Так как каж­дый сим­вол ко­ди­ру­ет­ся ми­ни­маль­ным чис­лом бит, а для хра­не­ния но­ме­ра от­ве­де­но ми­ни­маль­ное число байт, по­счи­та­ем ко­ли­че­ство бит вы­де­ля­е­мых на один сим­вол:

 дробь: чис­ли­тель: 114 байт , зна­ме­на­тель: 246 конец дроби = дробь: чис­ли­тель: 912 бит , зна­ме­на­тель: 246 конец дроби \approx 3,7 бит.

Так как для ко­ди­ро­ва­ния каж­до­го сим­во­ла ис­поль­зу­ет­ся ми­ни­маль­ное ко­ли­че­ство бит, опре­де­лим мак­си­маль­но воз­мож­ную мощ­ность ал­фа­ви­та, ис­поль­зу­е­мо­го для за­пи­си се­рий­ных но­ме­ров.

За­ме­тим, что k бит поз­во­ля­ют ко­ди­ро­вать 2k сим­во­лов.

Мак­си­маль­ная воз­мож­ная мощ­ность ал­фа­ви­та, ис­поль­зу­е­мо­го для за­пи­си се­рий­ных но­ме­ров 23 сим­во­лов = 8 сим­во­лов.

 

Ответ: 8.

 

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

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

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

bytes = bits//8

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

if bytes*703569 <= 77*1024**2: # если 703569 но­ме­ров по­ме­ща­ют­ся в 77М

print(2**k)

break


Аналоги к заданию № 79724: 83141 83169 Все

Источник: ЕГЭ—2025. До­сроч­ная волна 08.04.2025. Ва­ри­ант ФИПИ