Задание 11:
сколько памяти занимают пароли и номера

Запись — строка символов. Символ — несколько бит, запись — целое число байт, всё вместе — Кбайты и Мбайты.
Всё задание — одна цепочка, и в ней два округления вверх.

Базовый уровень, один балл. Ответ — одно целое число.

условие

Как это выглядит на экзамене

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

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

Демоверсия 2027, своими словами.

Что дано

Длина записи, сколько записей, сколько памяти. Неизвестно, из скольких символов алфавит.

Где теряют балл

В округлениях: бит на символ и байт на запись — только целые, и только вверх. И в том, что спрошено: мощность — не число бит.

формы

О чём спрашивают

Объём памятисколько Кбайт или Мбайт займут 262 144 идентификатора из 317 символов
Наибольшая длинакакой длины может быть номер, чтобы 2000 номеров уложились в 693 Кбайт
Наименьшая длинапри какой длине номера займут больше 23 Мбайт
Наибольшая мощностьиз скольких символов может быть алфавит, чтобы всё уложилось в память
Наименьшая мощностьпри каком алфавите номера займут не меньше заданного
Наибольшее количествосколько паролей (и сведений о пользователях) влезет в 3 Мбайт

Замер по 14 задачам экзаменов 2024–2027: объём — 4, длина — 4, мощность — 4, количество — 2. Шесть форм — шесть задач практикума.

цепочка

От символа к мегабайтам

Идентификатор: 250 символов, цифры и 1020 спецсимволов. Сколько Мбайт займут 4 194 304 идентификатора?

мощность алфавита10 + 1020 = 1030
→
бит на символ210 < 1030 < 211 → 11
→
байт на идентификатор250 · 11 = 2750 бит → ⌈2750 / 8⌉ = 344
→
все идентификаторы344 · 4 194 304 байт
→
в Мбайт… / 220 = 1376

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

шаг 1

Бит на символ: ceil(log2(a))

код бит различают 2i символов. Нужно наименьшее код, при котором 2i ≥ a.

i2i
101024
112048
124096
138192
фрагмент программы — набери его сам

Только вверх

1030 символов в 10 бит не влезут, хоть log2 и «почти 10». код и код здесь ошибка.

ловушка №1

Алфавит — целиком

Одни спецсимволы

1020 символов → 210 = 1024 → 10 бит.

Ответ выйдет 1252 Мбайт вместо 1376.

Цифры + спецсимволы

10 + 1020 = 1030 > 1024 → 11 бит.

Составители так и подбирают: спецалфавит чуть меньше степени двойки, а с цифрами — чуть больше.

В условииСимволов
десятичные цифры10
цифры шестнадцатеричной (N-ричной) системы16 (N)
заглавные латинские буквы26 — число не назовут
латинские буквы с учётом регистра52
шаг 2

Байт на запись: ceil(n * i / 8)

250 символов по 11 бит — 2750 бит, это 343,75 байта. Но запись занимает целое число байт: отводим 344.

фрагмент программы — набери его сам

Округляем каждую запись, а не общий итог: у каждой свои ¼ байта лишние.

Округлить в конце

2750 · 4 194 304 / 8 / 220 = 1375 — на мегабайт меньше. По 0,25 байта на каждый из четырёх миллионов идентификаторов.

Округлить запись

344 · 4 194 304 / 220 = 1376.

шаг 3

Единицы: степени двойки

1 Кбайт210 = 1024 байткод
1 Мбайт220 = 1 048 576 байткод
1 Гбайт230 байткод
фрагмент программы — набери его сам

Записей обычно степень двойки (65 536, 262 144, 4 194 304), поэтому ответ целый. код напечатает код — в ответ идёт код.

перебор

Неизвестна длина — перебираем

Номер: цифры и 500 спецсимволов. Для хранения 5000 номеров отведено не более 1000 Кбайт. Какой может быть наибольшая длина номера?

фрагмент программы — набери его сам
nбайт на номервсего байт≤ 1 024 000?
1802031 015 000да
181 ✓2041 020 000да
1822051 025 000нет
конец программы

Знак и конец цикла — из условия

В условииВ программе
отведено не более Xкод
отведено менее Xкод
требуется не менее Xкод
занимают более Xкод

Наибольшая

фрагмент программы — набери его сам

Наименьшая

фрагмент программы — набери его сам
разбор

Демоверсия 2027: по шагам

Номер из 157 символов. Для 12 450 номеров отведено не более 955 Кбайт. Наибольшая мощность алфавита?

инструмент

То же самое в Python

фрагмент программы — набери его сам

Начинаем с 2: код, алфавит из одного символа ничего не различает. Конец диапазона с запасом — до 216 и чуть дальше.

количество

Сколько записей влезет — вниз

Пароль — 23 символа: 52 латинские буквы, цифры и 25 спецсимволов. Кроме пароля, о пользователе хранят 15 байт сведений. Выделено 3 Мбайт. О скольких пользователях можно хранить сведения?

фрагмент программы — набери его сам

Сведения — после округления

15 байт добавляются к целым байтам пароля, а не к битам.

ловушки

Пять ловушек

  1. Алфавит не целиком. Цифры + буквы + спецсимволы, заглавных латинских 26.
  2. Бит не вверх. код, не код.
  3. Байт не вверх. код — на каждую запись.
  4. Единицы. Кбайт — код, Мбайт — код, Гбайт — код.
  5. Не то спрошено. Наибольшая — код, наименьшая — код; мощность — код, а не код.

Страница практикума узнаёт эти ошибки по ответу и показывает на разборе красным, где именно сломалось.

практикум

Что дальше

Шесть задач — по одной на каждую форму вопроса, все на экране сразу, порядок свой. Ошибся — появится разбор рисунком и программа, которая решает именно эту задачу, а кнопка «Новые числа» даст такую же с другими числами.

Конец цепочкиобъём памяти · наибольшее количество
Начало цепочкинаибольшая и наименьшая длина · наибольшая и наименьшая мощность

Тройку можно добрать, четвёрку и пятёрку — только заработать: решить можно всё, но без ошибок открыта «5», с одной — не выше «4», с двумя и больше — не выше «3».

дома

Домашняя работа

Те же шесть форм вопроса, по одной задаче на каждую. Тип закрывается одним верным ответом; ошибся — придёт такая же задача с другими числами. Потолок по ошибкам — тот же, что в практикуме.

Как сдать

От четырёх закрытых типов появится код работы вида код и кнопка «Сдать работу».

Вторая кнопка открывает письмо: к коду прикладываются снимки своих программ и того, что они напечатали.

Зачем снимок

Число можно получить и не написав программу. Снимок кода показывает, что приём ваш, — поэтому он и просится вместе с ответом.

В начале следующей пары — проверочная из шести задач.

Материалы подготовлены с использованием технологий искусственного интеллекта. Пробел раскрыть и дальше · ← → слайды