На предприятии каждой изготовленной детали присваивают серийный номер, состоящий из 2783 символов. В базе данных каждый серийный номер занимает одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным целым числом бит.
Известно, что для хранения 3 845 627 серийных номеров требуется не менее 11 Гбайт памяти. Определите минимально возможную мощность алфавита, используемого для записи серийных номеров. В ответе запишите только целое число.
Для хранения каждого из 3 845 627 кодов потребовалось:
Для хранения каждого из 2783 символов потребовалось:
Заметим, что k бит позволяют кодировать 2k символов.
Так как 28 = 256, то минимальная возможная мощность алфавита, используемого для записи серийных номеров 257 символов.
Ответ: 257.
Приведём решение Юрия Красильникова на языке Python.
for k in range(1,40): # длина кода символа в битах
bits = k*2783 # длина серийного номера в битах
bytes = bits//8
if bits%8 != 0: bytes+=1 # длина серийного номера в байтах
if bytes*3845627 >= 11*1024**3: # если 703569 номеров занимают не менее 11Г:
print(2**(k-1)+1)
break

