Задача к ЕГЭ по информатике на тему «коды с дополнительной информацией» №10

В Японии студенты устраиваются на новую работу. Каждый гражданин получает при входе два электронных пропуска, на одном из которых записаны имя студента, количество полных лет и наличие рекомендации, а на другом уникальный номер. Блок с именем содержит в себе 20 символов, каждый из которых может быть записан одним из 71 слога японского алфавита хираганы. При этом используют посимвольное кодирование, все символы кодируют одинаковым минимально возможным количеством бит. Всё имя занимает минимальное целое число байт. Количество лет – целое число от 1 до 150 включительно. Блок с рекомендацией несёт в себе лишь одно число: 0 – нет рекомендации, 1 – есть рекомендация. Биты, выделенные на блок кодирования количества лет, суммируются с битом рекомендации, которые занимают минимальное целое число байт. Для записи уникального номера используют числа от 0 до 1000 включительно. При этом используют посимвольное кодирование, все символы кодируют одинаковым минимально возможным количеством бит. Всего в базе 1000 японцев. Сколько минимально КБайт требуется выделить для этой базы?

1 символ японского алфавита из 71 символа может быть закодирован не менее, чем 7 битами, так как 26 = 64 <  71 < 27 = 128.  Так как символы кодируют минимально возможным числом бит, то 20 символов имени занимают 20 ⋅ 7 = 140  бит. Так как имя кодируется минимально возможным числом байт, в одном байте 8 бит, а 8 ⋅ 17 = 136 < 140 < 8 ⋅ 18 = 144,  то на хранение имени отводится 144 ÷ 8 =  18  байт.

Чтобы закодировать целое число от 1 до 150 потребуется минимально 8 бит, так как 27 = 128 <  150 < 28 = 256.  На кодирование блока с рекомендацией потребуется 1 бит. Для записи индивидуального номера потребуется числа от 0 до 1000, то есть 10 бит, так как  9                  10 2  = 512 <  1001 < 2   = 1024.  Вместе они занимают 19 бита, то есть 3 байт.

Итак, на одного японца придётся выделить 21 байт, а на 1000 — 21000 байт. Так как в 1 КБайте 1024 байт, а 20 ⋅ 1024 = 20480 < 21000 < 21 ⋅ 1024 = 21504,  то на хранение базы нужно отвести хотя бы 21 КБайт.

Ответ: 21
Оцените статью
Я решу все!