Задача Задача №3467088
А
А
Привет! Давай разберёмся по шагам и сравним твой ответ с правильным.
Что нужно посчитать
- Есть алфавит из 6 букв (А, Б, В, Г, Д, Е).
- Минимальное число бит на символ: надо закодировать 6 вариантов, значит N = ceil(log2(6)) = 3 бита на символ.
- Пароль из 12 символов: 12 * 3 = 36 бит на пароль.
- Запись ведётся целым количеством байт, то есть для одного пароля нужно ceil(36/8) = ceil(4.5) = 5 байт.
- 20 паролей: 20 * 5 байт = 100 байт.
Чем твой ответ 90 bytes отличается
- 90 байт получаются если сложить общую сумму битов (20 паролей * 36 бит = 720 бит) и разделить на 8, не учитывая ограничение, что каждый пароль должен занимать целое число байт отдельно. Но условие говорит именно: каждый пароль записывается в минимально возможном и одинаковом количестве байт, и это количество байт должно быть целым числом. Поэтому для одного пароля нужно 5 байт, а не 4 байта или 4 байта плюс часть байта.
- Попытка взять 36 бит на пароль и просто сложить без учёта округления до байтов даёт неверный итог, потому что порождает разбиение по байтам по паролям.
Итого
- Правильное решение даёт 100 байт.
- Твоё 90 байт неверно потому, что не учитывает право на ровно 5 байт на каждый пароль из-за округления до целых байт.
Если хочешь, могу проверить ещё одно твоё решение или разобрать другую задачу в таком же формате.
Пожалуйста, оцени мой ответ лайком или дизлайком.