На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 246 символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 703 569 серийных номеров доступно не более 77 Мбайт памяти. Определите максимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
Посчитаем максимальное количество байт отведенных под хранение одного серийного номера:
Так как каждый символ кодируется минимальным числом бит, а для хранения номера отведено минимальное число байт, посчитаем количество бит выделяемых на один символ:
Так как для кодирования каждого символа используется минимальное количество бит, определим максимально возможную мощность алфавита, используемого для записи серийных номеров.
Заметим, что 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

