Решение: Длина серийного номера
На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры, 26 латинских букв (без учёта регистра) и символы из 16 350-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 510 серийных номеров отведено более 96 Кбайт памяти. Определите минимально возможную длину серийного номера.
Решение по шагам
5 шаговОпределим мощность алфавита серийного номера.
$$N=10+26+16350=16386$$Найдём минимальное одинаковое число бит для кодирования одного символа. Так как $2^{14}=16384<16386\leq 2^{15}$, требуется 15 бит на символ.
$$i=\lceil\log_2 16386\rceil=15$$Для серийного номера длины $L$ объём информации составляет $15L$ бит, а занимаемая память — $\left\lceil\dfrac{15L}{8}\right\rceil$ байт.
Объём памяти для 510 номеров должен быть больше 96 Кбайт, то есть больше $96\cdot1024=98304$ байт. Следовательно, на один номер требуется не менее 193 байт.
$$\left\lceil\dfrac{98304+1}{510}\right\rceil=193$$Требуемая длина номера удовлетворяет неравенству $\left\lceil\dfrac{15L}{8}\right\rceil\geq193$. Минимальное $L$, при котором это выполняется, равно 103.
$$\left\lceil\dfrac{15\cdot103}{8}\right\rceil=\lceil193{,}125\rceil=194$$Где здесь ошибаются
Считать 14 бит достаточными, не учитывая, что $16386>2^{14}$.
Забыть округление объёма одного номера до целого числа байт.
Использовать 1000 байт в килобайте вместо 1024.
Проверять условие как нестрогое, хотя в задаче сказано «более 96 Кбайт».