Решение: Мощность алфавита номера
На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 199 символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 215 783 серийных номеров отведено не более 47 Мбайт памяти. Определите максимально возможную мощность алфавита, используемого для записи серийных номеров.
Решение по шагам
4 шагаПереведём общий объём памяти в байты и найдём максимально возможное число байт на один серийный номер:
$$\left\lfloor\dfrac{47 \cdot 2^{20}}{215783}\right\rfloor = 228$$Пусть один символ кодируется $k$ битами. Для номера из 199 символов требуется:
$$b = \left\lceil\dfrac{199k}{8}\right\rceil$$Из условия $b \leq 228$, поэтому $199k \leq 228 \cdot 8 = 1824$, откуда $k \leq 9$. При $k=9$ размер номера равен $\left\lceil\dfrac{199 \cdot 9}{8}\right\rceil = 224$ байта, а при $k=10$ — 249 байт, что недопустимо.
Максимальная мощность алфавита при 9 битах на символ:
$$2^9 = 512$$Где здесь ошибаются
Забывают округлить размер одного номера вверх до целого числа байт.
Используют 47 Мбайт как 47 000 000 байт вместо $47 \cdot 2^{20}$ байт.
Принимают число бит на символ за мощность алфавита.