На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры и символы из \(62\)-символьного специального алфавита. В базе данных каждый серийный номер занимает одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что \(5~895~222\) серийных номера занимают более \(23\) Мбайт памяти. Определите минимально возможную длину серийного номера.
Решение:
Для кодирования одного символа требуется минимум \(\left\lceil \log_2 72 \right\rceil = 7\) бит. Пусть длина серийного номера равна \(L.\) Тогда один серийный номер занимает в памяти $$\left\lceil \frac{7 \cdot L}{8} \right\rceil$$ байт. Получаем следующее ограничение $$5~895~222 \cdot \left\lceil \frac{7 \cdot L}{8} \right\rceil > 23 \cdot 2^{20}$$ Минимальный \(L\) легче всего найти программно:
Python
from math import ceil
for L in range(1, 1000):
if 5_895_222 * ceil(7 * L / 8) > 23 * 2**20:
print(L)
break
Ответ: \(5\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене