На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 102 символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 282 952 серийных номеров отведено не более 53 Мбайт памяти. Определите максимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
Определим максимальное количество байт выделенных под один серийный номер:
Для кодирования одного символа в серийном номере надо:
Заметим, что k бит позволяют кодировать 2k символов.
Максимально возможная мощность алфавита, используемого для записи серийных номеров:
215 = 32768.
Ответ: 32 768.
Приведём решение Александра Козлова на языке Python.
from math import ceil
max_b = 53 * 1024 * 1024 # 53 Мбайт в байтах
num_c = 282_952 # количество серийных номеров
length = 102# длина серийного номера
for i in range(100, 0, -1):
per_code = ceil(length * i / 8)
al_b = per_code * num_c
if al_b <= max_b:
size = 2 ** i
print(i,size)
break

