Класс, давайте разберёмся по-честному.
Что дано и как считать
- Длина идентификатора: 205 символов.
- Первый и последний символы — буквы из 18 вариантов.
- Все остальные 203 символа — цифры 0–9 (10 вариантов).
- Кодирование посимвольное: для букв используется минимальное число бит, чтобы закодировать 18 вариантов; для цифр — минимальное число бит, чтобы закодировать 10 вариантов.
- Хранение идент. идёт в байтах, т.е. предусмотрено минимальное целое число байт, покрывающее нужное количество бит.
Сколько бит в одном идентификаторе
- Буква из 18 вариантов: 2^n ≥ 18, наименьшее n = 5 бит.
- Цифра из 10 вариантов: 2^n ≥ 10, наименьшее n = 4 бит.
- Итого бит: 5 (первая буква) + 5 (последняя буква) + 4·203 (цифры) = 10 + 812 = 822 бита.
Сколько байт для одного идентификатора
- Нужно минимальное количество байт, кратное восьми битам, чтобы вместить 822 бита: ceil(822/8) = ceil(102.75) = 103 байта.
- Т.е. один идентификатор занимает 103 байта (824 бита, но под байты выделяем целое число байт).
Сколько памяти нужно для 220 паролей
- 220 паролей × 103 байта = 22 660 байт.
Ответ: 22660 байт.
Про твою ошибку
- Ты получил 6820 байт. Это существенно меньше правильного значения и не совпадает даже с простым умножением. Основная причина: ты, видимо, не учёл округление до целого количества байт. Правильный подход требует округления количества бит до кратного восьми и использования этого объёма на каждый пароль.
- Правильный путь: вычислить 822 бита на пароль, затем округлить вверх до байтов: 103 байта на пароль, далее умножить на 220 — получается 22660 байт.
Если хочешь, можем ещё раз пробежаться по такой задаче с другим примером — например, поменять количество символов или вариантов букв/цифр, чтобы проверить, как меняются шаги.
Пожалуйста, оценй мой ответ лайком или дизлайком.