ALEXMATH

Информатика. ЕГЭ

Задания для подготовки

Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников

Перейти к заданиям

Задание 11. Информатика. ЕГЭ. Статград. Профиль. 12.05.2025-1

Просмотры: 1749
Изменено: 13 мая 2025

Для передачи зашифрованных сообщений используется специальный алфавит из \(1800\) символов. Сообщения передаются двоичным кодом, при этом используется равномерное посимвольное кодирование, каждый символ кодируется одинаковым для всех символов минимальным числом бит, а сообщение в целом – минимально возможным числом байт. Затем подсчитывается контрольная сумма, равная количеству единиц в зашифрованном сообщении. Эта сумма переводится в двоичный код и дописывается в конец сообщения. Контрольная сумма содержит одинаковое для всех сообщений целое число байт. Суммарный размер сообщения при передаче должен быть не более \(1\) Кбайт. Какое наибольшее количество символов может входить в одно сообщение?

Решение:

Для кодирования одного символа потребуется минимум \(\lceil \log_2 1800 \rceil = 11\) бит. Алфавит можно закодировать так, что в двоичном коде каждого символа присутствует максимум \(7\) единиц: среди одиннадацатибитных кодов только один состоит из \(11\) единиц. С десятью единицами имеется всего \(C_{11}^{10} = 11\) кодов, с \(9\)-ю — \(C_{11}^{9} = 55,\) а с \(8\)-ю — \(C_{11}^{8} = 165.\) Итого \(1 + 11 + 55 + 165 = 232\) кода. Остаётся \(2048 - 232 = 1816\) что достаточно для кодирования алфавита из \(1800\) символов.

Пусть сообщение состоит из \(N\) символов. Тогда его длина в байтах равна \(\left\lceil \cfrac{11 N}{8} \right\rceil .\) Количество единиц в таком сообщении максимум \(7N\). Для его записи потребуется $$\left\lceil \frac{\lceil \log_2 (7 N) \rceil}{8} \right\rceil$$ байт. Т.о. получаем следующее неравенство $$\left\lceil \frac{11 N}{8} \right\rceil + \left\lceil \frac{\lceil \log_2 (7 N) \rceil}{8} \right\rceil \leqslant 1024,$$ которое мы решим программно:

Python


from math import ceil, log2

def len_msg(N):
    return ceil(11 * N / 8) + ceil(ceil(log2(7 * N)) / 8)

print(max(N for N in range(1, 1_000) if len_msg(N) <= 1024))

Ответ: \(743\)

Обсуждение задания

Здесь пока нет ни одного комментария. Будьте первым!

kege1
kege2
kege3
Новый тренажёр-эмулятор
Станции КЕГЭ

Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене.

Новое видео

Методы решения задания 16 ЕГЭ по Информатике «Вычисление рекуррентных выражений»

Поддержать автора сайта!

Поддержите автора сайта, если материалы, размещённые здесь, оказались вам полезны.

Совершая донат, вы соглашаетесь с Условиями использования

Расписание пробников Статграда в 2026/27 учебном году