Задание 5 ЕГЭ по информатике 2027: алгоритм над двоичной записью числа
- Раздел
- Алгоритмы и программирование
- Максимальный балл
- 1 балл
- Уровень
- базовый
- Что проверяет
- Формальное исполнение простого алгоритма, записанного на естественном языке, или умение создавать линейный алгоритм для формального исполнителя с ограниченным набором команд, или умение восстанавливать исходные данные линейного алгоритма по результатам его работы
- Что нужно сделать
- Выполнить алгоритм, который меняет двоичную или другую запись числа, и найти наименьшее или наибольшее подходящее число.
- Как записать ответ
- только число: целое, без пробелов и единиц измерения
- Время
- Около 4 минут по обобщённому плану ФИПИ
- Элемент кодификатора
- 3.3
- Компьютер
- Специальное ПО по плану ФИПИ не нужно: задание решают рассуждением, программа — для проверки
- Файл к заданию
- Нет — все данные в условии
- В 2026 году
- Тоже задание 5
Задание 5 ЕГЭ по информатике 2027 года проверяет, по формулировке ФИПИ, «формальное исполнение простого алгоритма, записанного на естественном языке»: нужно выполнить алгоритм, который перестраивает запись числа в двоичной или троичной системе, и назвать подходящее число. Файла к заданию нет, специализированное ПО не требуется, ответ вводится как одно целое число.
Уровень базовый: по обобщённому плану ФИПИ на задание отводится около 4 минут, за верный ответ — 1 балл, частичного балла нет. В 2027 году тематика не изменилась: в 2026 году под этим номером было то же задание. Средний процент выполнения по данным методических рекомендаций ФИПИ — 61,1 в 2026 году и 45,5 в 2025-м.
Ниже — три типа задания с разбором и решением на Python. Разбор демоверсии 2027 года и типичные ошибки — в конце страницы.
Тренажёр задания 5
Десять заданий номера 5 из банка тренажёра — с файлами, как на станции КЕГЭ. Решайте в песочнице Python прямо на странице или у себя; ответ проверяется по ключу, после проверки — верный ответ, разбор и решение на Python, а при ошибке — разбор от ИИ. Кнопка «Ещё 5 таких» у типа задания ниже даёт задания одного типа.
Задание 5 вместе с остальными — в вариантах целиком.
Типы задания 5 с решением
Двоичная запись: наименьшее R больше порога
На вход алгоритма подаётся натуральное число N. Строится двоичная запись N. Если N чётное, к записи слева дописывается 101, а справа 01; если N нечётное, справа дописывается только 01. Полученная запись — двоичная запись искомого числа R. Например, для N = 4 получается R = 177, для N = 29 — R = 117. Укажите наименьшее R, превышающее 995.
Для этого примера ответ — 997.
1. Перебираем все N по возрастанию и для каждого строим R: у чётного N — «101» слева и «01» справа, у нечётного — только «01» справа. 2. Среди значений, которые больше 995, запоминаем минимальное — оно и уходит в ответ. 3. Монотонности здесь нет: R(N) не растёт вместе с N, поэтому пропускать N нельзя, а останавливать перебор по первому подходящему N — ошибка. Просматриваются все N.
На примере: N = 249 (нечётное) даёт 1111100101₂ = 997 — это наименьшее подходящее значение. При этом N = 62, меньшее, даёт 1529: подходящее, но не минимальное. Справа всегда дописывается «01», поэтому все R нечётны и 996 получиться не может.
best = None
for n in range(1, 1000):
s = bin(n)[2:] # двоичная запись N
if n % 2 == 0:
r = int('101' + s + '01', 2) # чётное N
else:
r = int(s + '01', 2) # нечётное N
if r > 995 and (best is None or r < best):
best = r
print(best)
Ответ: 997
Двоичная запись: наибольшее или наименьшее N
На вход алгоритма подаётся натуральное число N. Строится двоичная запись N. Если N чётное, к этой записи и слева, и справа дописывается по 10; если N нечётное, слева дописываются две единицы, а справа нуль. Полученная запись — двоичная запись искомого числа R. Например, для N = 12 получается R = 178, для N = 15 — R = 126. Укажите наибольшее число N, после обработки которого получается R, не превышающее 4067.
Для этого примера ответ — 497.
1. Спрашивают наибольшее N, а не R: перебираем N по возрастанию и запоминаем последнее подходящее. 2. Граница перебора: R(N) больше N, поэтому при N не меньшем 4067 условие R ≤ 4067 нарушено — хватает перебора N от 1 до 4067. 3. Строим R приписыванием разрядов и сравниваем с порогом; набор разрядов у чётных и нечётных N разный. 4. Печатаем последнее подходящее N.
На примере: R(497) = 4066 ≤ 4067. Следующее чётное N = 498 даёт 1011111001010₂ = 6090, нечётное N = 499 — 4070; оба больше порога, значит 497 наибольшее.
best = 0
for n in range(1, 4068):
s = bin(n)[2:] # двоичная запись N
if n % 2 == 0:
r = int('10' + s + '10', 2)
else:
r = int('11' + s + '0', 2)
if r <= 4067:
best = n # перебор идёт по возрастанию, поэтому в best останется наибольшее
print(best)
Ответ: 497
Троичная запись: наибольшее R не больше порога
На вход алгоритма подаётся натуральное число N. Строится троичная запись N. Если N делится на 3, слева дописывается единица, а справа 20; если остаток равен 1, слева дописываются две двойки, а справа 21; если остаток равен 2, слева дописывается 20, а справа две двойки. Полученная запись — троичная запись искомого числа R. Например, для N = 21 получается R = 438, для N = 31 — R = 6118. Укажите наибольшее R, не превышающее 9208.
Для этого примера ответ — 9186.
1. R(N) больше N, поэтому условие R ≤ 9208 возможно только при N < 9208 — перебора N от 1 до 9208 достаточно. 2. Троичную запись строим делением на 3: остатки дают цифры с конца. 3. Приписываем разряды по остатку от деления N на 3 и переводим строку через int(s, 3) — основание именно 3, а не 2. 4. Из подходящих значений запоминаем наибольшее: здесь тоже нельзя останавливаться на первом найденном.
На примере: N = 291 делится на 3, его запись 101210₃, после дописывания получается 110121020₃ = 9186 ≤ 9208. Уже N = 292 (остаток 1) даёт 55123 — порог превышен.
def to_base3(n):
# троичная запись числа n: остатки от деления на 3, собранные с конца
digits = ''
while n > 0:
digits = str(n % 3) + digits
n //= 3
return digits
best = 0
for n in range(1, 9209):
s = to_base3(n)
if n % 3 == 0:
r = int('1' + s + '20', 3)
elif n % 3 == 1:
r = int('22' + s + '21', 3)
else:
r = int('20' + s + '22', 3)
if r <= 9208 and r > best:
best = r
print(best)
Ответ: 9186
Шаблон кода на Python
Алгоритм над двоичной записью числа
Перебор N с построением записи по правилу из условия. Правило меняется от варианта к варианту, перебор и перевод — нет; to_base нужна, если запись не двоичная.
def to_base(n, base):
digits = ''
while n > 0:
digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'[n % base] + digits
n //= base
return digits or '0'
for n in range(1, 1000):
b = bin(n)[2:] # или to_base(n, 3)
# правило из условия: например, дважды дописать
# справа остаток от деления суммы цифр на 2
for _ in range(2):
b += str(b.count('1') % 2)
r = int(b, 2)
if r > 130: # условие на R
print(n) # наименьшее N
break33
Как выполнять задание
- Откройте текст задания на станции: файла нет, вся формулировка на экране, ответ вводится в поле там же.
- Выпишите правило дописывания для каждого случая — обычно это чётность N или остаток от деления на 3.
- Определите, что ищут: наименьшее R выше порога, наибольшее R не выше порога или наибольшее N. От этого зависит, что печатать.
- Соберите R строкой: bin(n)[2:] для двоичной записи, остатки от деления на 3 — для троичной; приписывание разрядов — конкатенация, перевод — int(s, 2) или int(s, 3).
- Проверьте программу на примерах из условия: вынесите построение R в функцию и вызовите её для названных там N — она должна вернуть те же значения. Только после этого пускайте перебор на итоговый ответ.
- В ответ идёт одно целое число без пробелов и единиц измерения.
Что нужно знать
- Двоичная запись. bin(n)[2:] возвращает запись без префикса 0b; чётность числа — это её последняя цифра.
- Приписывание разрядов. Слева добавляются старшие разряды, справа — младшие; удобнее собрать строку и перевести её: int(s + '01', 2).
- Перевод в систему с основанием q. Деление на q, остатки собираются с конца — так строится троичная запись.
- Перебор вместо неравенства. Разбирать неравенство по разрядам долго, а перебор N от 1 занимает доли секунды. Опора: запись после дописывания удлиняется, поэтому R(N) больше N.
- Проверка. Оба числовых примера из условия — готовые тесты для программы.
Как оценивается
Проверка автоматическая, по ключу: ответ должен быть записан в форме из условия и полностью совпасть с эталоном. Код и черновики не проверяют — значение имеет только ответ. За верный ответ — 1 балл, частичного балла нет.
Критерии всех заданий экзамена — на странице критериев ЕГЭ.
Разбор задания демоверсии 2027
В демоверсии 2027 года задание 5 файла не имеет: ответ вводится в поле, ключ ФИПИ — 100. У чётного N к двоичной записи слева и справа дописывается по две единицы, у нечётного слева появляется единица, справа — два нуля.
Примеры из условия: N = 13 = 1101₂ нечётное, получаем 1110100₂ = 116; N = 6 = 110₂ чётное, получаем 1111011₂ = 123 — оба совпадают.
Теперь наименьшее R > 95. Число 95 = 1011111₂ занимает семь разрядов, значит и R не короче семи разрядов. Чётные трёхразрядные N дают 115 и 123, а наименьшее значение даёт N = 9 = 1001₂: 1100100₂ = 100. Записи из восьми и более разрядов дают числа от 128. Ключ — 100.
Типичные ошибки
Разряды приписывают к десятичной записи
Дописывать нужно к записи в той системе счисления, которая названа в условии: bin(n)[2:] для двоичной, деление на основание — для троичной. Приписывание к десятичному числу даёт неверный ответ.
Перебор взят со слишком узким пределом
R(N) всегда больше N, потому что запись только удлиняется. Значит, для условия R ≤ P достаточно перебрать N от 1 до P. Слишком узкая граница теряет ответ.
Печатают найденное R вместо N
В формулировке «укажите наибольшее число N, после обработки которого получается число R, не превышающее …» ищут именно N. Программа, которая запоминает и печатает R, выдаст другое число.
Строгий и нестрогий порог перепутаны
«Превышающее 95» — это R > 95, а «не превышающее 4067» — это R ≤ 4067. Замена знака на противоположный даёт соседнее число и лишает балла: неравенство полезно выписать до написания кода.
Пропуск N из-за ожидания монотонности
R(N) не растёт вместе с N: меньшее N может дать большее R. Нельзя остановить перебор, найдя первый подходящий N, и нельзя начинать его с середины — просматривают все N и выбирают минимум или максимум среди подходящих значений.
Вопросы и ответы
Есть ли шаблон для задания 5?
Да, общий шаблон — перебор N. Для каждого N строится запись в нужной системе, к ней приписываются разряды, строка переводится в число через int(s, q), затем проверяется условие на R. Отличаются задания только системой счисления, правилом дописывания и тем, что печатать — R или N.
Нужен ли компьютер для задания 5?
Специализированное ПО не требуется, файла нет, ответ — одно число. Числа небольшие, посчитать можно и вручную, но на станции быстрее написать короткую программу: она заодно перепроверит оба примера из условия.
Как решать задание 5 с троичной системой?
Так же, как с двоичной, но запись строится делением на 3, а перевод в число идёт через int(s, 3). Цифры троичной записи — 0, 1 и 2, поэтому int(s, 2) не подходит: на цифре 2 он выдаст ошибку.
Как понять, что печатать — R или N?
По последней фразе условия. «Укажите наименьшее число R, превышающее …» — печатают R, среди подходящих значений ищут минимум. «Укажите наибольшее число N, после обработки которого получается число R, не превышающее …» — печатают N, среди подходящих ищут максимум.
Изменилось ли задание 5 в 2027 году?
Тематика та же, что в 2026 году: по обобщённому плану это по-прежнему «формальное исполнение простого алгоритма», уровень базовый, около 4 минут, 1 балл без частичного. Среди изменённых тем 2027 года (10, 13 и 23) задание 5 не названо.
Другие задания раздела «Алгоритмы и программирование»
- Задание 6исполнитель Черепаха · до 1 балла
- Задание 12исполнитель Редактор и машина Тьюринга · до 1 балла
- Задание 13число программ исполнителя · до 1 балла
- Задание 16рекурсивные функции · до 1 балла
- Задание 17обработка последовательности из файла · до 1 балла
- Задание 24обработка строки из файла · до 1 балла
- Задание 25делители и маски чисел · до 1 балла
- Задание 26сортировка и жадный выбор · до 2 баллов
По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено: