Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 11. Информатика. ЕГЭ. Поляков-7854
- Просмотры: 3984
- Изменено: 15 апреля 2025
Каждое изделие, изготовленное на предприятии, получает уникальный код, состоящий из \(25\) символов. Каждый символ кода может быть латинской буквой (заглавной или строчной), десятичной цифрой или специальным символом из особого технического набора. В базе данных хранится список всех уже использованных кодов. При этом используется посимвольное кодирование, каждый символ кодируется одинаковым минимально возможным числом бит, а для хранения каждого кода отводится одинаковое минимально возможное число байт. Известно, что для хранения списка из \(5600\) кодов выделено не более \(190\) Кбайт. Какое наибольшее количество специальных символов может входить в особый технический набор?
Решение:
Пусть специальных символов \(N.\) Тогда для формирования кода используется \(10 + 52 + N\) символов. Каждый такой символ кодируется тогда минимум \(\lceil \log_2 (10 + 52 + N) \rceil\) битами, а на один код будет выделено как минимум \(\left\lceil \cfrac{25 \cdot \lceil \log_2 (10 + 52 + N) \rceil}{8} \right \rceil\) байт. Учитывая, что \(5600\) таких кодов занимают не более \(190\) Кбайт, получаем следующее ограничение $$5600 \cdot \left\lceil \cfrac{25 \cdot \lceil \log_2 (10 + 52 + N) \rceil}{8} \right \rceil \leqslant 190 \cdot 2^{10}.$$ Максимальное \(N,\) удовлетворяющее этому условию, легко найти программно:
Python
from math import ceil, log2
for N in range(100_000, 0, -1):
if 5600 * ceil(25 * ceil(log2(10 + 52 + N)) / 8) <= 190 * 2**10:
print(N)
break
Ответ: \(962\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


