Задание №11 — Количество информации
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 10 символов и содержащий только символы из 26-символьного набора строчных и 26-символьного набора заглавных латинских букв и двадцати знаков («=», «+» и др.). В базе данных для хранения сведений о каждом объекте отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего отведено целое число байт; это число одно и то же для всех пользователей.
Для хранения сведений о 21 пользователе потребовалось 4200 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое цисло - количество байт.
Правильный ответ
191
Пояснение
Решение:
В пароле используются 26 строчных и 26 заглавных латинских букв и 20 знаков («=», «+» и др.), значит мощность алфавита составляет символа. На один символ нужно минимальное целое , при котором . Так как , получаем бит.
Один пароль из 10 символов занимает бит. Число байт должно быть целым и минимальным: , поэтому под него отводится 9 байт.
На всех пользователей отведено одинаковое число байт, поэтому на одного пользователя приходится байт.
Из них 9 байт занимает пароль, значит на дополнительные сведения остаётся байт.
import math N = 26 + 26 + 20 # мощность алфавита i = math.ceil(math.log2(N)) # бит на один символ b = math.ceil(10 * i / 8) # байт на пароль print(4200 // 21 - b) # доп. сведения, байтОтвет: 191