На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из \(2783\) символов. В базе данных каждый серийный номер занимает одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным целым числом бит. Известно, что для хранения \(3~845~627\) серийных номеров требуется не менее \(11\) Гбайт памяти. Определите минимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
Решение:
Пусть в алфавите, используемом для кодирования серийных номеров, находится \(P\) символов. Тогда для кодирования одного символа из этого алфавита требуется минимум \(\left\lceil \log_2 P \right\rceil\) бит, а один серийный номер будет занимать в памяти как минимум $$\left\lceil \frac{2783 \cdot \left\lceil \log_2 P \right\rceil}{8} \right\rceil$$ байт. По условию задачи $$ 3~845~627 \cdot \left\lceil \frac{2783 \cdot \left\lceil \log_2 P \right\rceil}{8} \right\rceil \geqslant 11 \cdot 2^{30}$$ Для нахождения минимального \(P,\) для которого выполняется это условие, лучше всего воспользоваться Python
Python
from math import ceil, log2
for P in range(1, 100000):
if 3_845_627 * ceil(2783 * ceil(log2(P)) / 8) >= 11 * 2**30:
print(P)
break
Ответ: \(257\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене