На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из \(172\) символов. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения \(187~564\) серийных номеров отведено не более \(39\) Мбайт памяти. Определите максимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
Решение:
Пусть для кодирования одного символа выделено \(N\) бит. Тогда максимальная мощность алфавита составит \(2^N.\) Для кодирования одного номера необходимо $$I = \left\lceil \frac{172 \cdot N}{8} \right\rceil$$ байт памяти. Получаем следующее ограничение $$187~564 \cdot I \leqslant 39 \cdot 2^{20}$$ Найти максимальный \(N,\) удовлетворяющий этому условию, а значит, и максимальную мощность алфавита, проще всего программно
Python
from math import ceil
for N in range(100, 0, -1):
I = ceil(172 * N / 8)
if 187_564 * I <= 39 * 2**20:
print(2**N)
break
Ответ: \(1024\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене