Задача Задача №3560362
А
А
Коротко: нужно посчитать объем памяти по каждому полю для одного пользователя, затем умножить на 30. При этом каждое поле кодируем отдельно и с минимальным количеством байт, поэтому после вычисления битов каждое поле округляем вверх до полного числа байт.
- Определяем размер алфавита и биты на символ
- Электронная почта (имя пользователя): допустимы латинские строчные буквы (26), цифры (10), точка и нижнее подчеркивание (2). Всего 26 + 10 + 1 + 1 = 38 символов. Биты на символ: ceil(log2(38)) = 6 бит.
- Электронная почта (домен): такой же алфавит, 38 символов, 6 бит на символ.
- ФИО: Русские буквы в регистре (33 буквы) x 2 регистра = 66 вариантов, плюс пробел и дефис = 2. Всего 68 символов. Биты на символ: ceil(log2(68)) = 7 бит.
- Идентификационный номер: 1…2000 — 2000 вариантов. Требуется ceil(log2(2000)) = 11 биты, но хранить будем как минимальное целое количество байт. 11 бит поместится в 2 байтах (16 бит).
- Байты на одно поле (с учетом округления до полного байта)
- Имя пользователя электронной почты: длина 30 символов, 6 бит на символ → 30 × 6 = 180 бит. В байтах: ceil(180/8) = ceil(22.5) = 23 байта.
- Домен электронной почты: длина 10 символов, 6 бит на символ → 10 × 6 = 60 бит. В байтах: ceil(60/8) = ceil(7.5) = 8 байт.
- ФИО: длина 60 символов, 7 бит на символ → 60 × 7 = 420 бит. В байтах: ceil(420/8) = ceil(52.5) = 53 байта.
- Идентификационный номер: 2 байта (так как нужно разместить 2000 значений, что требует 11 бит, а минимально возможное целое число байт — 2).
- Сумма на одного пользователя
- ID: 2 байта
- Имя пользователя: 23 байта
- Домен: 8 байт
- ФИО: 53 байта Итого на одного пользователя: 2 + 23 + 8 + 53 = 86 байт.
- Для 30 пользователей
- 86 байт × 30 = 2 580 байт.
Ответ: требуется 2 580 байт памяти для хранения информации о 30 пользователях (примерно 2,53 КБ).