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