На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из \(695\) символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения \(8~721~506\) серийных номеров отведено не более \(9\) Гбайт памяти. Определите максимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
Решение:
Пусть для кодирования одного символа алфавита требуется минимум \(i\) бит. Максимальная мощность алфавита в этом случае составит \(2^i.\) Один серийный номер будет занимать в память $$\left\lceil \frac{695 \cdot i}{8} \right\rceil$$ байт. Получаем следующее ограничение на \(i:\) $$\left\lceil \frac{695 \cdot i}{8} \right\rceil \cdot 8~721~506 \leqslant 9 \cdot 2^{30}$$ Найти \(i,\) а значит и максимальную мощность алфавита легче всего программно:
Python
from math import ceil
for i in range(100, 1, -1):
sn = ceil(695 * i / 8)
if 8_721_506 * sn <= 9 * 2**30:
print(2**i)
break
Ответ: \(4096\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене