Задание 11. Информатика. ЕГЭ. Статград. 28.01.2025-1
- Просмотры: 1576
- Изменено: 2 февраля 2025
Предприятие выпускает партии изделий. Каждая партия получает уникальный код из \(21\) символа. Каждый символ кода может быть любой строчной или заглавной латинской буквой. Все изделия в партии получают последовательные номера от \(1\) до общего числа изделий в партии. Запись о каждом изделии заносится в информационную систему. Запись содержит код изделия и некоторую дополнительную информацию. Код изделия состоит из кода партии и номера изделия в партии. Для записи кода партии используется посимвольное кодирование, каждый символ кодируется одинаковым минимально возможным количеством битов. Номер изделия записывается как двоичное целое число, для записи каждого номера используется одинаковое минимально возможное количество битов. Для записи кода изделия в целом используется минимально возможное целое количество байтов. Для записи дополнительной информации о каждом изделии требуется \(60\) байт.
Известно, что для хранения информации обо всех изделиях одной партии используется не более \(80\) Кбайт. Какое наибольшее количество изделий может быть в партии?
Решение:
В латинском алфавите \(26\) букв. Поэтому для кодирования строчных и заглавных букв этого алфавита требуется минимум \(6\) бит ( \(2^5 = 32 < 52 < 2^6 = 64\)). Всего для кодирования партии потребуется \(21 \cdot 6\) бит. Пусть для кодирования номера изделия в партии нужно \(N\) бит. Тогда максимальный номер в партии будет \(2^N - 1\). Имеем следующее ограничение $$ \left( \left\lceil \frac{21 \cdot 6 + N}{8} \right\rceil + 60 \right) \cdot \left( 2^N - 1\right) \leqslant 80 \cdot 2^{10} $$ Найти наибольшее \(N,\) удовлетворяющее этому условию, а также максимально возможно число деталей в партии, легко с помощью программы:
Python
from math import ceil
N = 1
while True:
if (ceil((21 * 6 + N) / 8) + 60) * (2**N - 1) >= 80 * 2**10:
break
N += 1
print(2**(N-1) - 1)
Ответ: \(1023\)