Задание 11. Информатика. ЕГЭ. Поляков-7551

Просмотры: 389
Изменено: 10 апреля 2025

(ЕГЭ-2024) На предприятии каждой изготовленной детали присваивается серийный номер, содержащий десятичные цифры, \(26\) латинских букв (без учёта регистра) и символы из \(450\)-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения \(708\) серийных номеров отведено более \(213\) Кбайт памяти. Определите минимально возможную длину серийного номера. В ответе запишите только целое число.

Решение:

Мощность алфавита для серийных номеров равна \(10 + 26 + 450 = 486 < 512 = 2^9.\) Значит для кодирования одного символа необходимо минимум \(9\) бит. Пусть \(N\) — длина серийного номера. Тогда для его хранения требуется \(\left\lceil \cfrac{9N}{8}\right\rceil\) байт. Из условия задачи сразу получаем, что $$708 \cdot \left\lceil \cfrac{9N}{8}\right\rceil > 213 \cdot 2^{10}.$$ Минимальное \(N,\) удовлетворяющее этому неравенству, легко найти программно

Python


from math import ceil

print(min( [N for N in range(1, 10_000) if 708 * ceil(9 * N / 8) > 213 * 2**10]))

Ответ: \(274\)