Решение: Хранение паролей пользователей
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 23 символов. В качестве символов используются буквы из 12-символьного алфавита. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование паролей, все символы кодируются одинаковым и минимально возможным количеством бит. Кроме собственного пароля в системе хранятся дополнительные сведения о каждом пользователе, для чего выделено целое число байт; это число одно и то же для всех пользователей.
Для хранения сведений о 297 пользователях потребовалось 13 068 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе?
Решение по шагам
5 шаговДля кодирования одного символа алфавита из 12 символов требуется минимальное целое число бит:
$$\lceil\log_2 12\rceil = 4$$Объём пароля составляет:
$$23 \cdot 4 = 92\text{ бита}$$Так как данные хранятся целым числом байт, пароль занимает:
$$\left\lceil\frac{92}{8}\right\rceil = 12\text{ байт}$$На одного пользователя в базе данных приходится:
$$\frac{13068}{297} = 44\text{ байта}$$На дополнительные сведения выделено:
$$44 - 12 = 32\text{ байта}$$Где здесь ошибаются
Не округляют объём пароля до целого числа байт.
Используют 3 бита для символа, хотя $2^3 < 12$.
Вычитают объём пароля из общего объёма, не разделив его сначала на число пользователей.