Это задание проверяет умение подсчитывать информационный объём сообщения. Задание повышенного уровня, на его выполнение отводится около трёх минут.
Условие задачи
При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 250 символов. Идентификатор содержит только десятичные цифры и символы из 16-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое минимально возможное целое число байт. Используется посимвольное кодирование, и все символы кодируются одинаковым и минимально возможным количеством бит. Необходимо определить объём памяти в килобайтах, необходимый для хранения 65536 идентификаторов. В ответе следует записать только целое число (количество килобайт).
Решение задачи
Для нахождения объёма памяти, необходимого для хранения 65536 идентификаторов, сначала определим объём памяти одного идентификатора. Воспользуемся формулой: I = K * i, где:
- I — объём памяти, необходимый для хранения одного идентификатора;
- K — количество символов в одном идентификаторе;
- i — количество бит, необходимых для кодирования одного символа.
Известно, что K = 250. Для нахождения i воспользуемся формулой n = 2<sup>i</sup>, где n — мощность алфавита.
Мощность алфавита (n) определяется количеством десятичных цифр (10) плюс количество символов специального алфавита (16): n = 10 + 16 = 26. (Исправлено: в условии задачи указан 16-символьный алфавит, а не 1650)
Подставив значение n в формулу, получим: 26 = 2<sup>i</sup>. Поскольку 2<sup>4</sup> = 16 и 2<sup>5</sup> = 32, минимальное целое значение i равно 5. Таким образом, каждый символ кодируется 5 битами.
Теперь можно вычислить объём памяти одного идентификатора: I = 250 * 5 = 1250 бит.
Переведём биты в байты, разделив на 8 (так как 1 байт = 8 бит): 1250 / 8 = 156,25 байт. Так как необходимо минимально возможное целое число байт, округляем до 157 байт.
Для вычисления общего объёма памяти, умножим объём памяти одного идентификатора на общее количество идентификаторов: 157 * 65536 = 10270272 байт.
Наконец, переведём байты в килобайты, разделив на 1024: 10270272 / 1024 = 10029,7 килобайт. Округляем до целого числа: 10030 килобайт.
Ответ
10030