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