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