На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры и символы из 510-символьного специального алфавита.
В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит.
Известно, что для хранения 18 982 657 серийных номеров отведено не менее 9379 Мбайт памяти.
Определите минимально допустимую длину серийного номера. В ответе запишите только целое число.
Ответ:
Резервная волна ЕГЭ по информатике 22.06.2026 – задание №11
Решение:
Для решения задачи можно использовать программу на Python:
|
1 2 3 4 5 6 7 8 9 10 |
from math import * for i in range(1, 10000): p = ceil(log2(10 + 510)) n = ceil((i * p) / 8) if n * 18_982_657 >= 9379 * 1024 * 1024: print(i) break |
Разберём программу.
В серийном номере могут использоваться:
- 10 десятичных цифр;
- 510 символов специального алфавита.
Всего:
10 + 510 = 520 символов.
Для кодирования одного символа требуется минимальное количество бит:
ceil(log2520) = 10 бит,
так как:
29 = 512 < 520 ≤ 1024 = 210.
Переменная i обозначает длину серийного номера.
Количество байт, необходимое для хранения одного серийного номера:
n = ceil(i × 10 / 8).
Функция ceil() используется потому, что для каждого серийного номера отводится целое число байт.
Далее проверяется условие:
n × 18 982 657 ≥ 9379 × 1024 × 1024.
Правая часть переводит 9379 Мбайт в байты.
Перебираем длины серийного номера, начиная с 1. Первое значение, при котором условие выполняется:
i = 415.
При длине 415 символов один номер занимает:
ceil(415 × 10 / 8) = ceil(518,75) = 519 байт.
Это минимальная длина, при которой общий объём памяти достигает указанного в условии значения.
Ответ: 415