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