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