Контрольные задания > На предприятии каждой изготовленной детали присваивается серийный номер, содержащий десятичные цифры и символы из 2030-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 318 серийных номеров отведено более 67 Кбайт памяти. Определите минимально возможную длину серийного номера.
Вопрос:
На предприятии каждой изготовленной детали присваивается серийный номер, содержащий десятичные цифры и символы из 2030-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 318 серийных номеров отведено более 67 Кбайт памяти. Определите минимально возможную длину серийного номера.
1. Определим минимальное число бит для кодирования одного символа из алфавита размером 2030 символов. Это число равно минимальному целому числу, удовлетворяющему неравенству 2^k >= 2030, где k - количество бит на символ. Решая, получаем k = 11 бит.
2. Для одного серийного номера требуется кодирование n символов. Тогда его длина в байтах равна (n * 11) / 8, округленная до ближайшего целого.
3. Для 318 номеров та же длина равна (318 * n * 11) / 8. Это значение должно быть больше 67 Кбайт (или 67 * 1024 байт).
Решая это неравенство относительно n, находим минимальное значение n, удовлетворяющее условию.