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