ЕГЭ · Информатикаподготовка по заданиям
Задание 11 из 27Теория

Теоретические основы информатики · 1 балл

Объём сообщения

Кодирование текста

Найти объём, длину или мощность алфавита по условиям хранения идентификаторов, паролей и номеров.

Теория целое число

Что проверяет

Алфавитный подход к измерению информации: мощность алфавита, вес символа, объём сообщения и памяти для записей.

Основание: проект спецификации и кодификатора КИМ 2027. Открыть документы

Теория

Что нужно знать

Задание 11 проверяет алфавитный подход к измерению информации и расчёт объёма памяти для сообщений, идентификаторов, паролей и серийных номеров. В демоверсии 2027 дан серийный номер из 157 символов: для 12 450 номеров отведено не более 955 Кбайт, а найти нужно максимальную мощность алфавита. В банке задач формулировки шире: объём всех записей, длина строки, мощность алфавита, количество пользователей, дополнительные сведения и даже замена одного символа на два. Схема решения одна: найти вес одного символа, перейти от битов к байтам с округлением вверх и связать размер записи с их количеством.

Минимум для задания 11

  • что такое бит, байт, Кбайт и Мбайт
  • почему 1 Кбайт равен 1024 байтам, а не 1000
  • что такое мощность алфавита N
  • как найти минимальное число бит на символ: N ≤ 2^i
  • что означают «посимвольное кодирование» и «одинаковое минимальное число бит»
  • как считается объём сообщения: I = K · i
  • почему биты округляют до целых байтов вверх
  • как учитывать поля записи и дополнительные сведения
  • как кодировать числовые поля с диапазоном значений
  • как из общего объёма найти длину, мощность алфавита или количество записей
  • чем отличаются «не более», «не менее», «более» и «менее»
  • как связаны длина кода и его ёмкость N^L
  • как проверить ответ обратным счётом

Как устроено задание 11

Задание относится к разделу «Теоретические основы информатики» и оценивается в 1 первичный балл. В условии описывают систему, которая хранит записи: идентификаторы, пароли, пропуска, серийные номера или данные о людях. Почти всегда сказано, что каждый символ кодируется одинаковым и минимально возможным числом бит, а запись занимает минимальное целое число байт. Нужно найти объём памяти, длину, мощность алфавита или количество записей.

  • Ответ — целое число: объём, длина, мощность алфавита или количество записей.
  • Иногда ответ состоит из буквы и числа: например, Б925 в задаче о замене смайлика.
  • Файлы к заданию обычно не прилагаются: все данные есть в тексте.
  • Главная величина — вес одного символа в битах.
  • Все промежуточные вычисления удобно вести в битах, а в байты переводить в конце.

Бит, байт и единицы измерения

Бит — минимальная единица информации. Байт состоит из восьми битов. В заданиях ЕГЭ большие единицы всегда считаются по степеням двойки, если в условии прямо не сказано обратное. Поэтому 1 Кбайт — это 1024 байта, а не 1000.

  • 1 байт = 8 бит.
  • 1 Кбайт = 1024 байта = 2^10 байт.
  • 1 Мбайт = 1024 Кбайта = 2^20 байт.
  • 1 Гбайт = 1024 Мбайта = 2^30 байт.
  • 1 Тбайт = 1024 Гбайта = 2^40 байт.
  • Перевод в байты: разделить число бит на 8.
  • Перевод в Кбайт: разделить число байт на 1024.
  • Перевод в Мбайт: разделить число байт на 1024 ещё раз.
1 байт = 8 бит1 Кбайт = 2^10 байт1 Мбайт = 2^20 байт

Мощность алфавита и вес символа

Мощность алфавита N — это количество различных символов, которые вообще могут встретиться. Если все символы кодируются одинаковым числом бит i, то i бит позволяют закодировать не более 2^i различных символов. Поэтому нужно наименьшее целое i, при котором 2^i не меньше N.

  • N = 2 → i = 1; N = 3 → i = 2; N = 4 → i = 2.
  • N = 8 → i = 3; N = 9 → i = 4; N = 16 → i = 4.
  • N = 1024 → i = 10; N = 1025 → i = 11.
  • Если N — точная степень двойки, i = log2 N.
  • Если N не степень двойки, i = ceil(log2 N).
  • Округлять log2 N вниз нельзя: кодов не хватит.
  • При N = 1 формально достаточно 0 бит, но в экзаменационных задачах такой случай почти не встречается.
2^i ≥ Ni = ceil(log2 N)I = K × i

Что входит в алфавит

Ошибки чаще всего возникают не в формулах, а при подсчёте N. Нужно перечислить все различные символы, которые разрешены условием, и не забыть про регистр, цифры и специальные знаки. Разные части записи могут использовать разные алфавиты — тогда вес символа считается для каждой части отдельно.

  • Десятичные цифры: 10 символов.
  • Латинские буквы: 26 строчных, 26 заглавных, вместе 52.
  • Русские буквы: 33 строчные, 33 заглавные, вместе 66.
  • Специальные символы считаются поштучно: пробел, минус и точка — это три символа.
  • Смайлик — один символ, но если у него 5 цветов, это уже 5 различных символов.
  • Заглавная и строчная буквы различаются, если это сказано в условии.
  • Шестнадцатеричные цифры — это 16 символов, двоичные — 2, троичные — 3.
  • Если алфавиты полей разные, складывать их нельзя: для каждого поля свой вес символа.
N = 10 + 26 + 26 + 8i = ceil(log2 N)

Объём сообщения и записи

Объём сообщения в битах равен количеству символов, умноженному на вес одного символа. Если сообщение или запись хранится целым числом байт, результат делят на 8 и округляют вверх. Округление вниз оставит часть информации за пределами выделенной памяти.

  • I = K · i, где K — длина в символах, i — бит на символ.
  • Число байт: S = ceil(I / 8).
  • Для M одинаковых записей: V = M · S.
  • Символ почти всегда занимает нецелое число байт: округлять до байта нужно всю запись, а не каждый символ.
  • Если сказано, что каждый символ кодируется целым числом байт, это отдельное требование, и его нужно проверять.
  • Перевод в Кбайт и Мбайт выполняют после подсчёта байтов.
I = K × iS = ceil(K × i / 8)V = M × S

Несколько полей и дополнительные сведения

Запись может состоять из нескольких частей: логина и пароля, кода и номера подразделения, даты и фамилии. Каждое поле кодируется своим алфавитом, после чего размеры складываются. Затем добавляются дополнительные сведения, если они предусмотрены условием.

  • Числовое поле от 1 до M требует i = ceil(log2 M) бит: важно количество значений, а не последнее число.
  • Дата из дня, месяца и года — это три отдельных поля со своими диапазонами.
  • Если каждое поле округляется до байта отдельно, складывают уже байты.
  • Если округляется вся запись, сначала складывают биты, затем делят на 8.
  • Дополнительные сведения D байт прибавляются к размеру каждой записи.
  • Итог: V = количество записей · (размер записи + D).
  • Неизвестную длину или доп. сведения находят из уравнения с общим объёмом.
i_поля = ceil(log2 M)S = ceil((K1 × i1 + K2 × i2) / 8)S = S_записи + DV = M_записей × S

Ёмкость кодов и длина номера

Если алфавит содержит N символов, а длина кода равна L, то различных кодов можно составить N^L. Чтобы закодировать M уникальных объектов, нужно N^L ≥ M. Это отдельное условие от объёма памяти: длина влияет и на количество вариантов, и на размер записи.

  • Количество различных строк длины L: N^L.
  • Минимальная длина для M уникальных кодов: наименьшее L, при котором N^L ≥ M.
  • Пример: 72^3 = 373 248, а 72^4 = 26 873 856.
  • Размер одного кода: S = ceil(L · i / 8) байт.
  • Мощность алфавита N и длина L — разные величины.
  • Если кодов нужно больше, чем N^L, увеличивают длину, а не мощность.
N^L ≥ MS = ceil(L × i / 8)V = M × S

Обратные задачи и границы

В большинстве задач неизвестен один параметр: длина, мощность алфавита, количество записей или размер дополнительных сведений. Такую задачу решают уравнением или перебором. Объём монотонно растёт с ростом i, N и L, поэтому достаточно найти первое подходящее значение и проверить соседнее.

  • Неизвестная мощность: перебирайте N или i и проверяйте объём.
  • Неизвестная длина: перебирайте L и пересчитывайте байты.
  • Неизвестное количество: делите общий объём на размер записи и берите целую часть.
  • Неизвестные дополнительные байты: вычитайте известную часть из объёма одной записи.
  • «Не более» — неравенство ≤, «не менее» — ≥.
  • «Более» и «менее» — строгие неравенства: граничное значение не подходит.
  • Максимальная мощность при известном i: N_max = 2^i.
  • Минимальная мощность при известном i: N_min = 2^(i−1) + 1.
  • Количество возможных мощностей: верхняя граница минус нижняя плюс один.
N_min = 2^(i−1) + 1N_max = 2^iK = floor(V / S)

Разбор примера

Демоверсия 2027: максимальная мощность алфавита

Серийный номер состоит из 157 символов. Для хранения 12 450 номеров отведено не более 955 Кбайт. Нужно найти максимально возможную мощность алфавита.

Демоверсия 2027: серийные номера
ШагВеличинаЗначение
1Общий объём955 · 1024 = 977 920 байт
2Максимум на один номер977 920 / 12 450 = 78,54 → 78 байт
3Битов на номер78 · 8 = 624 бита
4Битов на символ624 / 157 = 3,97 → 3 бита
5Мощность алфавитаN ≤ 2^3 = 8
  1. Переводим 955 Кбайт в байты: 955 · 1024 = 977 920.
  2. Делим на количество номеров: 977 920 / 12 450 ≈ 78,54. Так как памяти «не более», на номер приходится максимум 78 целых байт.
  3. Переводим в биты: 78 · 8 = 624 бита на весь номер.
  4. Делим на длину номера: 624 / 157 ≈ 3,97. Значит, на символ можно выделить максимум 3 бита: при 4 битах номер займёт 628 бит, то есть 79 байт.
  5. Три бита позволяют закодировать не более 2^3 = 8 символов.

Ответ8.

Способы решения

Выберите метод под формулировку

Методы собраны по решениям задания 11 из базы Kompege. Начните с того, что именно нужно найти в условии.

01

когда даны алфавит и длина

Вес символа и объём сообщения

Когда использовать: Известны все символы алфавита и количество символов в сообщении; нужно найти объём в битах или байтах.

  1. Перечислите все различные символы и найдите N.
  2. Найдите минимальное i: наименьшее целое, при котором 2^i ≥ N.
  3. Умножьте длину сообщения на i — получите биты.
  4. Разделите на 8 и округлите вверх, если нужны целые байты.
  5. Проверьте, что в алфавит включены цифры, регистр и специальные знаки.

Пример

Сообщение из 1016 символов: 33 заглавные и 33 строчные русские буквы, 10 цифр и 50 смайликов по 5 цветов. N = 66 + 10 + 250 = 326, поэтому i = 9. Объём: 1016 · 9 = 9144 бита = 1143 байта.

from math import ceil, log2

N = 33 * 2 + 10 + 50 * 5
i = ceil(log2(N))
K = 1016
print(N, i, K * i // 8)

Ответ1143 байта.

По мотивам задачи № 19360 (база Kompege).

02

когда нужно найти память для всех записей

Идентификатор: от алфавита к байтам

Когда использовать: Дан идентификатор фиксированной длины, алфавит и количество записей; нужно найти общий объём.

  1. Найдите мощность алфавита N.
  2. Посчитайте i = ceil(log2 N).
  3. Умножьте длину идентификатора на i — получите биты.
  4. Переведите в байты с округлением вверх: это размер одной записи.
  5. Умножьте на количество записей и переведите в Кбайт или Мбайт.

Пример

Идентификатор из 127 символов; алфавит — 1337 специальных символов и 10 цифр. N = 1347, i = 11. Один идентификатор: 127 · 11 = 1397 бит, то есть ceil(1397 / 8) = 175 байт. Для 16 384 идентификаторов: 16 384 · 175 / 1024 = 2800 Кбайт.

from math import ceil, log2

N = 1337 + 10
i = ceil(log2(N))
size = ceil(127 * i / 8)
print(i, size, 16384 * size // 1024)

Ответ2800 Кбайт.

По мотивам задачи № 9951 (база Kompege).

03

когда есть логин, пароль или части кода

Несколько полей в одной записи

Когда использовать: Запись состоит из нескольких частей с разными алфавитами; нужно найти общий объём.

  1. Для каждого поля отдельно найдите N и i.
  2. Посчитайте биты каждого поля.
  3. Если поля округляются по отдельности, переведите каждое в байты вверх.
  4. Сложите размеры полей — получите размер записи.
  5. Умножьте на количество записей и переведите в нужные единицы.

Пример

Логин из 5 символов 16-ричного алфавита: 5 · 4 = 20 бит, то есть 3 байта. Пароль из 11 символов: 26 строчных + 26 заглавных + 10 цифр + 8 знаков = 70, i = 7; 11 · 7 = 77 бит, то есть 10 байт. На пользователя 13 байт. Для 262 144 пользователей: 262 144 · 13 / 1024 = 3328 Кбайт.

from math import ceil, log2

def field_bytes(length, N):
    return ceil(length * ceil(log2(N)) / 8)

login = field_bytes(5, 16)
password = field_bytes(11, 26 + 26 + 10 + 8)
print(login, password, 262144 * (login + password) // 1024)

Ответ3328 Кбайт.

По мотивам задачи № 11911 (база Kompege).

04

когда хранят даты и числа

Числовые поля и диапазоны

Когда использовать: Поле принимает значения из диапазона, например год от 1 до 2100 или день от 1 до 31.

  1. Для каждого поля определите количество возможных значений M.
  2. Найдите i = ceil(log2 M): это минимальное число бит для поля.
  3. Сложите биты всех полей.
  4. Если спрашивают минимальное число байт для записи, округлите сумму вверх.
  5. Не путайте последнее значение диапазона с количеством значений.

Пример

Дата: год от 1 до 2100, месяц от 1 до 12, день от 1 до 31. Для года нужно ceil(log2 2100) = 12 бит, для месяца — 4 бита, для дня — 5 бит. Итого 12 + 4 + 5 = 21 бит.

from math import ceil, log2

bits = ceil(log2(2100)) + ceil(log2(12)) + ceil(log2(31))
print(bits)

Ответ21 бит.

По мотивам задачи № 719 (база Kompege).

05

когда длина одной части неизвестна

Неизвестная длина из общего объёма

Когда использовать: Даны общий объём и связь между длинами двух полей, например логин на 21 символ длиннее пароля.

  1. Найдите объём, приходящийся на одну запись.
  2. Вычтите известные поля и дополнительные сведения.
  3. Выразите неизвестную длину через x.
  4. Составьте уравнение по битам или байтам.
  5. Решите уравнение и проверьте, что длина целая.

Пример

1024 пользователя занимают 80 Кбайт, то есть 80 байт на пользователя. Дополнительная информация — 8 байт, значит логин и пароль вместе занимают 72 байта = 576 бит. Логин: 11 бит на символ, пароль: 4 бита. Пароль равен x, логин x + 21: 4x + 11(x + 21) = 576. Отсюда x = 23, длина логина 44.

for x in range(1, 100):
    if 4 * x + 11 * (x + 21) == 72 * 8:
        print(x, x + 21)

Ответ44.

По мотивам задачи № 11704 (база Kompege).

06

когда спрашивают «сколько байт выделено»

Неизвестные дополнительные сведения

Когда использовать: Известны общий объём, количество пользователей и размер пароля; нужно найти доп. сведения.

  1. Найдите размер одной записи: общий объём разделите на количество.
  2. Посчитайте размер пароля или кода в байтах.
  3. Вычтите его из размера записи.
  4. Проверьте, что результат целый и не отрицательный.
  5. Подставьте найденное значение обратно в общий объём.

Пример

Пароль из 9 символов; алфавит: 10 цифр + 26 строчных + 26 заглавных + 5 специальных = 67 символов. i = 7, пароль занимает 9 · 7 = 63 бита, то есть 8 байт. На 20 пользователей отведено 500 байт, значит на одного 25 байт. Дополнительные сведения: 25 − 8 = 17 байт.

from math import ceil, log2

i = ceil(log2(10 + 26 + 26 + 5))
password = ceil(9 * i / 8)
per_user = 500 // 20
print(i, password, per_user - password)

Ответ17 байт.

По мотивам задачи № 26053 (база Kompege).

07

когда нужно минимальное или максимальное N

Неизвестная мощность алфавита

Когда использовать: Известны длина, количество записей и граница объёма; нужно найти мощность алфавита.

  1. Свяжите размер записи с i: S = ceil(L · i / 8).
  2. Запишите неравенство для общего объёма.
  3. Перебирайте i от 1 вверх или от большого значения вниз.
  4. Для найденного i возьмите минимальное N = 2^(i−1) + 1 или максимальное N = 2^i.
  5. Проверьте соседнее i: оно должно уже нарушать границу.

Пример

Номер из 206 символов, 601 058 номеров занимают не менее 143 Мбайт. При i = 9 номер занимает ceil(206 · 9 / 8) = 232 байта, всего около 133,0 Мбайт — мало. При i = 10 — ceil(2060 / 8) = 258 байт, всего около 147,9 Мбайт — подходит. Минимальная мощность для 10 бит: 2^9 + 1 = 513.

from math import ceil, log2

for i in range(1, 20):
    size = ceil(206 * i / 8)
    if 601058 * size >= 143 * 1024 * 1024:
        print(i, 2 ** (i - 1) + 1)
        break

Ответ513.

По мотивам задачи № 23504 (база Kompege).

08

когда спрашивают максимальную или минимальную длину

Неизвестная длина номера

Когда использовать: Известны мощность алфавита, количество записей и граница объёма; нужно найти длину.

  1. Найдите вес символа i по мощности алфавита.
  2. Выразите размер записи через длину L: ceil(L · i / 8).
  3. Запишите неравенство для общего объёма.
  4. Перебирайте L в нужную сторону до первого подходящего значения.
  5. Проверьте, что следующая длина уже нарушает условие.

Пример

Алфавит: 10 цифр + 58 букв + 1982 специальных символа = 2050, поэтому i = 12. Для 2144 номеров отведено не более 986,3 Кбайт. При L = 314 номер занимает ceil(314 · 12 / 8) = 471 байт, всего 1 009 824 байта — подходит. При L = 315 уже 473 байта и 1 014 112 байт — больше границы. Ответ 314.

from math import ceil, log2

i = ceil(log2(10 + 58 + 1982))
for L in range(1000, 0, -1):
    if 2144 * ceil(L * i / 8) <= 986.3 * 1024:
        print(L, i)
        break

Ответ314.

По мотивам задачи № 23023 (база Kompege).

09

когда номеров должно хватить на всех

Ёмкость номеров и минимальная длина

Когда использовать: Нужно закодировать M уникальных объектов, а затем посчитать объём получившихся номеров.

  1. Найдите N и i.
  2. Подберите минимальную длину L, при которой N^L ≥ M.
  3. Посчитайте размер одного номера: ceil(L · i / 8).
  4. Умножьте на количество номеров.
  5. Переведите в требуемые единицы и при необходимости возьмите целую часть.

Пример

Алфавит: 10 цифр + 62 специальных символа = 72, i = 7. За 10 лет выпускают 10 000 000 деталей. 72^3 = 373 248 — мало, 72^4 = 26 873 856 — достаточно, значит L = 4. Номер занимает 4 · 7 = 28 бит = 4 байта. Объём: 10 000 000 · 4 / 1024 / 1024 ≈ 38,15 Мбайт, целая часть 38.

from math import ceil, log2

N = 10 + 62
i = ceil(log2(N))
count = 10_000_000
L = 1
while N ** L < count:
    L += 1
size = ceil(L * i / 8)
print(L, size, int(count * size / 1024 / 1024))

Ответ38 Мбайт.

По мотивам задачи № 26085 (база Kompege).

10

когда длины паролей разные

Два типа записей с общим алфавитом

Когда использовать: Есть несколько групп записей разной длины, но алфавит у них один и тот же.

  1. Обозначьте мощность алфавита N и выразите i = ceil(log2 N).
  2. Для каждой длины посчитайте размер записи в байтах.
  3. Умножьте размеры на количество записей каждого типа.
  4. Сложите и приравняйте к общему объёму.
  5. Перебирайте N; проверьте минимальное и максимальное подходящее значение.

Пример

Пароли длиной 7 и 9 символов, 384 и 256 штук, всего 7168 байт. При N = 1025 имеем i = 11; пароль из 7 символов занимает ceil(77 / 8) = 10 байт, из 9 — ceil(99 / 8) = 13 байт. Проверка: 384 · 10 + 256 · 13 = 3840 + 3328 = 7168. Меньшие N дают i ≤ 10 и другой объём, поэтому минимум N = 1025.

from math import ceil, log2

for N in range(2, 10000):
    i = ceil(log2(N))
    a = ceil(7 * i / 8)
    b = ceil(9 * i / 8)
    if 384 * a + 256 * b == 7168:
        print(N, i)
        break

Ответ1025.

По мотивам задачи № 29070 (база Kompege).

11

когда объём задан интервалом

Границы и количество вариантов

Когда использовать: Сказано «более 51 Мбайт и менее 52 Мбайт» или «не более 955 Кбайт»; нужно найти все подходящие мощности.

  1. Переведите границы в байты.
  2. Разделите на количество записей и получите допустимый размер одной записи.
  3. Для «не более» берите целую часть вниз, для «не менее» — вверх; строгие границы не включайте.
  4. Для каждого допустимого размера найдите i и проверьте, что ceil(L · i / 8) даёт этот размер.
  5. Для найденного i посчитайте количество N: от 2^(i−1) + 1 до 2^i.

Пример

125 700 номеров по 312 символов занимают более 51 и менее 52 Мбайт. Размер номера больше 425,4 и меньше 433,7, то есть от 426 до 433 байт. Подходит только i = 11: 312 · 11 = 3432 бита = 429 байт. Тогда N от 1025 до 2048, всего 2048 − 1024 = 1024 варианта.

from math import ceil

low = 51 * 1024 * 1024
high = 52 * 1024 * 1024
lo = ceil(low / 125700)
hi = int(high / 125700)
variants = 0
for i in range(1, 40):
    size = ceil(312 * i / 8)
    if lo <= size <= hi:
        variants += 2 ** i - 2 ** (i - 1)
print(variants)

Ответ1024.

По мотивам задачи № 18978 (база Kompege).

12

когда один символ заменяют на два

Замена символа и сравнение объёмов

Когда использовать: Нужно сравнить два способа кодирования: исходный алфавит и алфавит после замены одного символа на последовательность.

  1. Посчитайте объём первым способом: K1 · i1.
  2. При замене пересчитайте длину: каждый заменённый символ даёт два новых.
  3. Пересчитайте мощность алфавита: старый символ исчезает, новые уже могли входить в алфавит.
  4. Посчитайте объём вторым способом.
  5. Сравните объёмы и запишите букву способа и разницу.

Пример

Алфавит из 33 символов, сообщение из 1000 символов, смайлик встречается 15 раз. Первый способ: i = 6, объём 6000 бит. После замены смайлика на «:)» алфавит стал 32 символа (i = 5), а длина 1000 − 15 + 30 = 1015. Второй объём 5075 бит. Он меньше на 925, поэтому ответ Б925.

first = 1000 * 6
second = (1000 - 15 + 30) * 5
print(first, second, first - second)

ОтветБ925.

По мотивам задачи № 17697 (база Kompege).

13

перед записью ответа

Проверка и типичные ловушки

Когда использовать: Ответ уже получен, но нужно быстро найти обидную ошибку.

  • Подставьте найденный размер записи обратно в общий объём.
  • Проверьте, что при следующем i или L объём выходит за указанную границу.
  • Убедитесь, что ответ в тех единицах, которые просят: биты, байты, Кбайт или Мбайт.
  • Проверьте, что 1 Кбайт считался как 1024 байта.
  • Пересчитайте алфавит: цифры, оба регистра, пробелы и специальные знаки.
  • Убедитесь, что поля с разными алфавитами считались отдельно.
  • Не округляйте вниз, если запись должна занимать минимальное целое число байт.
  • Если ответ — мощность алфавита, проверьте, что N целое и больше 1.
  • Если ответ содержит букву, сначала определите более выгодный способ, затем разницу.
  • Проверьте, что не перепутаны длина номера и мощность алфавита.
  • Для строгих границ «более» и «менее» не включайте граничное значение.
  • Сделайте обратный счёт: количество · размер записи ≤ или ≥ заданного объёма.

Шпаргалка: формулировка → метод

В условииЧто делать
«сколько бит на символ»i = ceil(log2 N)
«N — степень двойки»i = log2 N
«объём сообщения»I = K · i
«объём в байтах»ceil(K · i / 8)
«размер одной записи»ceil(K · i / 8)
«объём всех записей»M · размер записи
«есть дополнительные сведения»+D байт на каждую запись
«несколько полей»сложить размеры полей
«поле от 1 до M»ceil(log2 M) бит
«дата: день, месяц, год»сумма бит трёх полей
«неизвестная длина»перебор L или уравнение
«неизвестная мощность»перебор N или i
«неизвестное количество»floor(объём / размер записи)
«не более»≤; при делении объёма округлять вниз
«не менее»≥; при делении объёма округлять вверх
«более» и «менее»строгие неравенства
«максимальная мощность»максимальное i, затем N = 2^i
«минимальная мощность»минимальное i, затем N = 2^(i−1) + 1
«сколько вариантов мощности»верхняя граница − нижняя + 1
«минимальная длина номера»N^L ≥ количество
«сколько Мбайт»байты / 1024 / 1024
«целая часть»int(...)
«заменили символ на два»пересчитать и K, и N
«разные алфавиты частей»считать i отдельно
«проверка ответа»подставить размер обратно в объём

По базе Kompege: 1 079 задач, 54 решения (27 программных и 27 текстовых) и 217 видеоразборов (132 YouTube, 49 VK, 36 Rutube) по заданию 11. Для методов отобраны решения задач № 9951, 10123, 11704, 11911, 14306, 16258, 16347, 16607–16612, 17696, 17697, 17819, 17890, 18978, 19012, 19013, 19360, 19999, 20735, 21828, 23023, 23504, 23584, 24296, 25106, 26053, 26054, 26085, 26591, 26592, 29070–29073, 31027 и 31470; дополнительные материалы и видеоразборы — задачи № 55, 126, 128, 303, 719, 1964, 2467, 3152, 5433, 5914, 16258 и 31508; примеры переработаны в учебные.

Разборы из видео

Задачи, которые разбирают в курсе

Условия и код показаны в кадре в конце соответствующего фрагмента. Источники задач — КомпЕГЭ, сайт К. Полякова, ФИПИ и другие.

№ 40

разбор из видео · 2025

Пароль из 15 символов: объём памяти

Пароль состоит из 15 символов алфавита из 9 символов. Каждый символ кодируется минимальным одинаковым числом бит, пароль — минимальным целым числом байт. Сколько байт нужно для 25 паролей?

from math import *
kod = 9
char = ceil(log2(kod))
pas = ceil(15 * char / 8)
print(25 * pas)

Ответ200

Полный архив

Все фрагменты видеоразборов

По одному пункту на каждую главу: условие или код из кадра, ответ и ссылка. Источники задач — КомпЕГЭ, сайт К. Полякова, ФИПИ и другие; номер берётся из кадра. Текст с экрана распознан автоматически, служебные строки и артефакты удалены; если текст нечитаем, остаются название, таймкод и ссылка.

Показать все фрагменты (12)
2025 · 00:00 Приветствие

В этом фрагменте — теория или пояснение; решение показано в видео.

2025 · 03:15 Про двоичное кодирование

40) При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 15 символов и содержащий только символы из набора И,Н,Ф, О, P, М, А, T, К. Каждый такой пароль в компьютерной программе записывается минимально возможным и одинаковым целым количеством байт (при этом используют посимвольное кодирование и все символы кодируются — одинаковым и минимально возможным количеством бит). Определите объём памяти в байтах, отводимый этой программой для записи 25 паролей.

2025 · 21:45 Определение размера паролей

40) При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 7 bee 85. пароль в компьютерной программе записывается минимально возможным и одинаковым целым количеством байт (при этом используют посимвольное кодирование и все символы кодируются одинаковым и минимально возможным количеством бит). Определите объём памяти в байтах, отводимый этой программой для записи 25 паролей.

GT = aT
from math import *
kod = 9
pas = ceil( 15*char/8 )
2025 · 36:45 Определение размера дополнительных сведений

минимальное возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме "собственного пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт одинаковое для каждого пользователя. Для хранения сведений о 30 пользователях потребовалось 870 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе. В ответе запишите только целое число — Лера + 10426 +26 = 62 увкерий (6547 He син)

from math import ¥
kod = 10+26+26
pas = ceil( 10*char/8 )
user = 870/30
print(user - pas)
2025 · 45:20 Определение размера идентификаторов

В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено 12 байт на одного пользователя. В компьютерной системе выделено 2 Кб для хранения сведений о пользователях. О каком наибольшем количестве пользователей может быть сохранена _ информация в системе? В ответе запишите только целое число — количество пользователей.

2025 · 53:10 Наибольшее количество пользователей 17931

возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 1974 серийных номеров отведено не более 579 Кбайт памяти. Определите максимально возможную длину серийного номера. В ответе запишите только целое число.

2025 · 1:04:55 Максимальная длина номера 17933

Для его хранения отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и 432 Мбайт памяти. Определите минимально возможную мощность алфавита, из которого составляются В ответе запишите только число.

2025 · 1:19:20 Минимальная мощность алфавита

Ярмухаметов) При регистрации в компьютерной системе каждому пользователю присваивается идентификатор и дополнительные сведения. Идентификатор, состоящий из 303 символов, содержит десятичные цифры и символы из 8190-символьного набора. Для его хранения отведено одинаковое и минимально возможное число байт. Идентификатор кодируются посимвольно, то есть каждый символ представляется с помощью минимального и одинакового для всех символов количества бит. В базе данных "сведений о 101 пользователях потребовалось не более 101 Кбайт. Определите максимальный объём памяти (в байт), необходимый для хранения дополнительных сведений одного пользователя. В ответе запишите только целое число - количество бай

2025 · 1:29:40 Максимальный объём дополнительных сведений

подразделения (целое число от 1 до 1200) и дополнительная информация. 17 символов и может включать латинские буквы (заглавные и строчные буквы различаются), "десятичные цифры и специальные знаки из набора @#$%^&*(). Для хранения кода используется посимвольное кодирование, все символы кодируются одинаковым минимально возможным количеством битов, для записи кода отводится минимально возможное целое число байтов. Номер подразделения кодируется отдельно и занимает минимально возможное целое число байтов. Известно, что на карте хранится всёго 48 байтов данных. Сколько байтов занимает

2025 · 1:36:40 Кодирование чисел как символов

70) Каждый сотрудник предприятия получает электронный пропуск, на котором записаны личный код, "сотрудника, код подразделения и некоторая дополнительная информация. Личный код состоит из 14 символов, каждый из которых может быть заглавной латинской буквой (используется 26 различных букв) или одной из цифр от 0 до 9. Для записи кода на пропуске отведено минимально возможное целое число байт, При этом используют посимвольное кодирование, все символы кодируют одинаковым минимально возможным количеством бит. на первых пяти позициях могут стоять латинские буквы от А до F, затем - три десятичных цифры. Код подразделения записан на пропуске как двоичное чи

2025 · 1:44:10 Использование нескольких кодировок

70) Каждый сотрудник предприятия получает электронный пропуск, на котором записаны личный код сотрудника, код подразделения и некоторая дополнительная информация. Личный код состоит из 14 символов, каждый из которых может быть заглавной латинской буквой (используется 26 различных букв) или одной из цифр отО до 9. Для записи кода Ha пропуске отведено минимально возможное целое число байт. При этом используют посимвольное кодирование, все символы о Юдируют одинаковым минимально возможным количеством бит. Код подразделения состоит из 8 символов: на первых пяти позициях могут стоять латинские буквы OT А Ao F, затем — три "десятичных цифры. Код подразделения записан на пропуске как двоичное число

from math import *
zif = ceil( log2(10) )
print(3® - lk - kp)
2025 · 1:53:40 Окончание и напутствия

В этом фрагменте — теория или пояснение; решение показано в видео.

Типичные ошибки

  • путают биты и байты
  • округляют вниз вместо вверх
  • забывают служебные символы, пробелы и регистр
  • считают 26 букв вместо 52, когда важны оба регистра
  • не учитывают дополнительные сведения
  • складывают алфавиты разных полей
  • путают длину строки и мощность алфавита
  • при «не более» округляют объём вверх, а при «не менее» вниз
  • считают 1 Кбайт равным 1000 байт
  • не проверяют, что при следующем i объём выходит за границу
  • забывают, что ответ может содержать букву
  • округляют каждый символ до целого байта

Ключевые формулы

  • N ≤ 2^i, i = ceil(log2 N)
  • I = K × i
  • S = ceil(K × i / 8)
  • V = M × S
  • N^L ≥ M

Практика

Навигатор и методические рекомендации опубликованы в 2026 году: номера заданий в них могут отличаться от нумерации 2027 года. Ориентируйтесь на тему.