Классно, давай разберёмся вместе.
Что было в задании и что нам нужно найти
- Пароль состоит из 11 символов.
- Обязательно должно быть хотя бы 2 цифры, хотя бы 1 заглавная и 1 строчная буквы, и минимум 2 символа из набора из 6 спецсимволов.
- Всего символов, которые можно использовать, 68 (10 цифр + 26 заглавных + 26 строчных + 6 спецсимволов).
- Каждому символу требуется одинаковое минимальное количество бит, чтобы однозначно кодировать 68 вариантов.
- Пароль хранится посимвольным кодированием, одинаково бит на символ.
- В базе есть дополнительные сведения, и для хранения этих сведений выделено одно и то же число байт на каждого пользователя.
- Всего для 30 пользователей потребовалось 900 байт на эти дополнительные сведения.
- Вопрос: сколько байт выделено для хранения дополнительных сведений об одном пользователе?
Ключевые вычисления
- Сколько бит нужно на один символ
- Нужно закодировать 68 вариантов.
- 2^6 = 64 недостаточно, 2^7 = 128 подходит.
- Значит 7 бит на символ.
- Сколько бит на пароль
- 11 символов × 7 бит = 77 бит.
- Перевод в байты
- 77 бит → ceil(77/8) = 10 байт на пароль.
- Как распределяются байты на пользователя
- Всего на доп. сведения выделено: 900 байт / 30 пользователей = 30 байт на пользователя.
- Что именно ищем
- Сколько байт выделено для хранения дополнительных сведений об одном пользователе? Это 30 байт минус те байты, которые занимают собственно пароль (10 байт).
- 30 − 10 = 20 байт.
Итак, ваш ответ 10 байт — это количество байт, выделенных под сам пароль, а не под дополнительные сведения. Правильный ответ: 20.
Пояснение по сути ошибки
- Вы нашли размер пароля в байтах (10) и остановились на этом.
- Задание же спрашивает количество байт на дополнительные сведения у одного пользователя, т.е. общий запас на пользователя минус место под пароль.
Если хочешь, могу разобрать аналогичную задачку по шагам ещё раз или привести другой пример с похожей логикой.
Пожалуйста, оцените мой ответ лайком или дизлайком.