Решение: Мощность алфавита номера
На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 246 символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 703 569 серийных номеров доступно не более 77 Мбайт памяти. Определите максимально возможную мощность алфавита, используемого для записи серийных номеров.
Решение по шагам
5 шаговОпределим максимально допустимый размер одного серийного номера:
$$\left\lfloor \dfrac{77 \cdot 2^{20}}{703569} \right\rfloor = 114\ \text{байт}$$Если один символ кодируется $i$ битами, номер занимает:
$$L = \left\lceil \dfrac{246i}{8} \right\rceil$$Проверим $i=3$: размер номера равен $\left\lceil \dfrac{246 \cdot 3}{8} \right\rceil = 93$ байта, что допустимо.
При $i=4$ размер номера равен $\left\lceil \dfrac{246 \cdot 4}{8} \right\rceil = 123$ байта, что превышает допустимые 114 байт.
При 3 битах можно закодировать $2^3=8$ различных символов.
Где здесь ошибаются
Забывают округлить размер одного номера вверх до целого числа байт.
Используют 77 Мбайт как 77 000 000 байт вместо $77 \cdot 2^{20}$ байт.
Считают мощностью алфавита число бит на символ, а не $2^i$.