Базовый (1 балл)
Время: 2-4 мин
Формула N <= 2^i
Округление вверх ceil
Все задачи №{ topic_num } в каталоге
Задание №11. Подсчет объема памяти для хранения паролей
Тема: Мощность алфавита $N \le 2^i$, посимвольное кодирование и побайтовое округление
Вычисление объёма памяти для хранения учётных записей пользователей (пароли + дополнительные сведения). Решается пошаговым математическим расчетом.
1. Пошаговый алгоритм расчета:
- Считаем мощность алфавита $N$ (количество допустимых символов).
- Находим вес 1 символа $i$ бит по формуле $N \le 2^i$ (округляем ВСЕГДА ВВЕРХ до целого числа бит).
- Считаем вес пароля длины $L$ в битах: $I_{бит} = L \cdot i$.
- Переводим вес пароля в байты: $I_{пароля} = \lceil I_{бит} / 8 \rceil$ (округляем ВВЕРХ до целого байта!).
- Считаем общий объем на одного пользователя: $I_{чел} = I_{пароля} + I_{доп}$.
- Умножаем на количество пользователей $K$: $I_{общ} = K \cdot I_{чел}$.
Разновидности и прототипы задания на экзамене
Тип 1: Пароль + Дополнительные сведения
Пароль переводится в байты, затем прибавляются доп. сведения на пользователя.
Анти-примеры (Типичные ошибки vs Как делать правильно)
Как делать НЕ надо:
Ошибка: Округлить общий объем всех паролей сразу, а не каждого по отдельности
Пароль каждого пользователя по условию сохраняется целым числом байт!
Как делать ПРАВИЛЬНО:
Правильно: Округлять до байтов вес КАЖДОГО пароля отдельно: math.ceil(L * i / 8).
ГРОБ
ГРОБ №11: Дополнительные сведения даны в битах, а не в байтах
В условии: 'дополнительные сведения занимают 14 бит'.
Как обойти ловушку: Сложите биты пароля и биты доп. сведений, если на пользователя целиком отводится целое число байт: `ceil((I_pass_bits + 14) / 8)`.
Лайфхаки и подводные камни на экзамене:
- При делении на 8 всегда округляйте вверх: если получилось 4.1 байта -> берем строго 5 байт!