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