На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры и символы из \(120\)-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым минимально возможным числом бит. Известно, что для хранения \(12~755~226\) серийных номеров отведено не более \(5\) Гбайт памяти. Определите максимально допустимую длину серийного номера. В ответе запишите только целое число.
Решение:
Для кодирования \(10\) цифр и \(120\) символов специального алфавита требуется $$\left\lceil \log_2 (10 + 120) \right\rceil = 8$$ бит на один символ. Пусть длина серийного номера \(L\) символов. В памяти он будет занимать $$\left\lceil \frac{8 \cdot L}{8} \right\rceil$$ байт. Получаем следующее ограничение $$12~755~226 \cdot \left\lceil \frac{8 \cdot L}{8} \right\rceil \leqslant 5 \cdot 2^{30}.$$ Найти минимальное \(L,\) удовлетворяющее этому неравенству, проще всего программно:
Python
from math import ceil
for L in range(1000, 1, -1):
if 12_755_226 * ceil(8 * L / 8) <= 5 * 2**30:
print(L)
break
Ответ: \(420\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене