11. Вычисление количества информации: #291949
На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры и символы из $62$-символьного специального алфавита. В базе данных каждый серийный номер занимает одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что $5,895,222$ серийных номера занимают более $23$ Мбайт памяти.
Определите минимально возможную длину серийного номера.
Общее количество символов алфавита: $10+62=72$.
Для кодирования одного символа требуется $7$ бит, так как $2^6=64<72\leq128=2^7$.
Определим, сколько байт должен занимать один серийный номер.
Объём $23$ Мбайт: $23\cdot1024\cdot1024=24,117,248$ байт.
Если один номер занимает $4$ байта, общий объём равен $5,895,222\cdot4=23,580,888$ байт, что меньше $23$ Мбайт.
Если один номер занимает $5$ байт, общий объём равен $5,895,222\cdot5=29,476,110$ байт, что больше $23$ Мбайт.
Следовательно, один серийный номер должен занимать минимум $5$ байт.
Пусть длина номера равна $L$. Для хранения номера требуется $\left\lceil\dfrac{7L}{8}\right\rceil=5$ байт.
При $L=4$: $$\left\lceil\dfrac{7\cdot4}{8}\right\rceil=\left\lceil3{,}5\right\rceil=4 байта.$$
При $L=5$: $$\left\lceil\dfrac{7\cdot5}{8}\right\rceil=\left\lceil4{,}375\right\rceil=5 байт.$$
Минимально возможная длина серийного номера равна $5$.