Шешімі: Хранение паролей пользователей
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 10 символов. В качестве символов используют прописные буквы латинского алфавита, то есть 26 различных символов. В базе данных для хранения каждого пароля отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственного пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей.
Для хранения данных о 100 пользователях потребовалось 2200 байт. Сколько байт выделено для хранения дополнительных данных об одном пользователе?
Шешімін қадамдап көрсету
4 қадамОпределим минимальное количество бит для кодирования одного символа. Оно должно удовлетворять условию:
$$2^i \geq 26$$Так как $2^4 = 16 < 26$, а $2^5 = 32 \geq 26$, один символ кодируется 5 битами.
Пароль из 10 символов занимает $10 \cdot 5 = 50$ бит, то есть для хранения в целых байтах требуется $\lceil 50 / 8 \rceil = 7$ байт.
На одного пользователя в среднем приходится $2200 / 100 = 22$ байта. Дополнительные сведения занимают $22 - 7 = 15$ байт.
Где здесь ошибаются
Использовать 4 бита для символа, хотя 4 битами можно закодировать только 16 различных символов.
Не округлить объём пароля вверх до целого числа байт.
Вычесть объём пароля из общего объёма данных, не разделив его сначала на число пользователей.