5 мин чтения

Задание 5 ЕГЭ по информатике 2027 — алгоритм над двоичной записью и наименьшее R

Разбор задания 5 ЕГЭ по информатике 2027: автомат дописывает цифры к двоичной записи числа, вопрос — наименьшее R, превышающее X. Почему перебор с break даёт 115 вместо 100, таблица N → R и код на Python.

Задание 5 в демоверсии 2027 года — автомат над двоичной записью: по числу N строится новое число R, и спрашивают наименьшее R, превышающее 95. Ответ — 100, и получить его можно за минуту перебором на Python. Но только если не останавливаться на первом подходящем числе: R не растёт вместе с N, и перебор с break выдаёт 115. Ниже — правило из демо, таблица N → R, объяснение, почему результат «скачет», код и вариации вопроса.

В демоверсии 2026 был автомат того же типа, с другим правилом дописывания цифр, а вопрос шёл в обратную сторону — наименьшее N, при котором R не меньше 200. Задачи, где исполнитель применял команды к числу, а решали обратным ходом, разобраны в статье о задании 5. Техника обратного хода там по-прежнему полезна для задач из сборников, но на демоверсии 2027 она не нужна.

Условие демоверсии 2027

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R:

  1. Строится двоичная запись числа N.
  2. Запись обрабатывается по правилу: если N чётное, то к записи справа и слева дописываются по две единицы; если N нечётное, то в конец записи дописываются два нуля, а в начало — единица. Полученная запись (в ней на три или четыре разряда больше) — двоичная запись числа R.
  3. Результат переводится в десятичную систему и выводится на экран.

Примеры из условия: для N = 13 = 1101₂ результат 1110100₂ = 116, для N = 6 = 110₂ результат 1111011₂ = 123. Вопрос: укажите наименьшее число R, превышающее 95, которое может быть результатом работы алгоритма. Ответ ФИПИ: 100.

Таблица N → R

Правило проще всего увидеть на первых числах. Чётные и нечётные N идут по разным веткам, и это видно по результатам.

NДвоичная записьПравилоЗапись RR
11нечётное: 1 … 00110012
210чётное: 11 … 1111101159
311нечётное1110028
4100чётное1110011115
5101нечётное11010052
6110чётное1111011123
7111нечётное11110060
81000чётное11100011227
91001нечётное1100100100
101010чётное11101011235
111011нечётное1101100108
121100чётное11110011243

Результаты больше 95: 115 (N = 4), 123 (N = 6), 227 (N = 8), 100 (N = 9), 235 (N = 10), 108 (N = 11), 243 (N = 12). Наименьший из них — 100, он появляется при N = 9. А первый по порядку N — 115 при N = 4. Кто перебирает N подряд и останавливается на первом результате больше 95, получает 115 и теряет балл.

Почему R «скачет»

Дописать единицу слева к k-разрядной записи — значит прибавить 2^k. Дописать две цифры справа — умножить на 4 и прибавить значение этих цифр. Отсюда две формулы:

NЗапись RФормула
чётное11 + запись + 11R = 4N + 3 + 3 · 2^(k+2)
нечётное1 + запись + 00R = 4N + 2^(k+2)

где k — число разрядов в двоичной записи N. Для чётных N слева стоят две единицы, и слагаемое 3 · 2^(k+2) делает результат заметно больше, чем у соседнего нечётного N с одной единицей слева. Поэтому последовательность R немонотонна — то растёт, то падает: N = 4 даёт 115, а N = 9 — только 100. Любое задание этой формы устроено так же, и именно поэтому ответ ищут как минимум по множеству, а не как первый подходящий.

Решение на Python

def rule(n):
    s = bin(n)[2:]               # двоичная запись без приставки 0b
    if n % 2 == 0:
        s = "11" + s + "11"
    else:
        s = "1" + s + "00"
    return int(s, 2)             # обратно в десятичную

X = 95
results = []
for n in range(1, 1000):
    r = rule(n)
    if r > X:
        results.append(r)

print(min(results))              # 100

Три детали, на которых держится код. Срез [2:] убирает приставку 0b — без него нуль из приставки попадёт в запись. Функция int(s, 2) переводит строку из нулей и единиц обратно в число. И последняя строка — min по списку всех подходящих R, а не break в цикле.

Граница перебора 1000 взята с запасом: запись R длиннее записи N на три-четыре разряда, значит R не меньше 8N, и для R около ста хватило бы N до пятнадцати. Запас ничего не стоит, а пустой results — верный признак, что граница мала и min упадёт на пустом списке.

Чтобы увидеть ловушку, замени последние строки:

for n in range(1, 1000):
    if rule(n) > X:
        print(n, rule(n))        # 4 115
        break

Так напечатается 115 — первый результат по порядку N, но не наименьший.

Ещё один пример с другим правилом

Правило: если N чётное, слева к двоичной записи дописывается 10, а справа 0; если N нечётное, слева дописывается 11, а справа 10. Для N = 7 = 111₂ получается 1111110₂ = 126, для N = 20 = 10100₂ — 10101000₂ = 168. Вопрос: наименьшее R, превышающее 138.

Меняется только функция rule:

def rule(n):
    s = bin(n)[2:]
    if n % 2 == 0:
        s = "10" + s + "0"
    else:
        s = "11" + s + "10"
    return int(s, 2)

X = 138
results = [rule(n) for n in range(1, 1000) if rule(n) > X]
print(min(results))                  # 160

Ответ — 160. А первый по порядку N результат больше 138 равен 230: разрыв с правильным ответом ещё больше, чем в демоверсии. Правило другое, ловушка та же, код тот же.

Вариации вопроса

ВопросПоследняя строка
Наименьшее R, превышающее Xmin(r for r in results) при условии r > X
Наибольшее R, не превышающее Xmax(r for r in results) при условии r <= X
Наименьшее N, при котором R в отрезке [A; B]собирать пары (n, r) и взять n первой пары с подходящим r
Сколько различных R на отрезкеlen(set(r for r in results)) при условии A <= r <= B

Для «наименьшего N» перебор по возрастанию N как раз годится — первая подходящая пара и есть ответ. Путаница возникает, когда спрашивают про R, а перебирают по N: это разные порядки, и для R нужен min.

В сборниках прошлых лет встречаются правила над восьмеричной и троичной записью: для них вместо bin берут oct или свою функцию перевода, а обратно — int(s, 8) и int(s, 3). Переводы между системами счисления разобраны в статье о задании 14.

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

Остановка на первом подходящем R

Самая дорогая ошибка формы 2027: break на первом R > X даёт 115 вместо 100. Собирай все подходящие результаты и бери минимум.

Приставка 0b в записи

bin(13) возвращает строку '0b1101'. Если не отрезать 0b, дописанные цифры встанут вокруг приставки, и int(s, 2) упадёт или посчитает не то.

Перепутаны ветки чётности

В демо чётное число получает единицы с обеих сторон, нечётное — единицу слева и нули справа. Перепутанные ветки дают правдоподобные, но неверные результаты. Проверь функцию на примерах из условия: 13 → 116 и 6 → 123.

Перевод обратно не в ту систему

int(s, 2) для двоичной записи. Ошибка int(s) без основания прочитает строку 1100100 как число один миллион сто тысяч сто.

Мала граница перебора

Если граница меньше, чем нужно, список ответов пуст и min падает с ошибкой. Для «наименьшего R, превышающего X» хватает перебора N до X; удвоить границу дешевле, чем потерять балл.

Подборка ошибок по всем номерам — в статье Типичные ошибки на ЕГЭ по информатике.

Тайминг на экзамене

ЭтапВремя
Перенести правило в функцию rule1 мин
Проверить функцию на примерах из условия30 сек
Запустить перебор с min30 сек
Итого2–3 мин

Спецификация даёт на задание 5 четыре минуты. Проверка на примерах из условия обязательна: она ловит перепутанные ветки чётности до того, как ответ ушёл в бланк.

Как тренироваться

  1. Реши пять заданий этой формы с разными правилами — дописывание справа, слева, вычёркивание цифр, сумма цифр. Функция rule меняется, остальной код — нет.
  2. Для каждого построй таблицу N → R на первых десяти числах и найди ответ руками, потом сверь с кодом.
  3. Один раз специально реши через break и увидь неверный ответ — после этого рука сама потянется к min.
  4. Прогони шаблон на правилах с другими основаниями (oct, троичная), чтобы не зависеть от bin.

Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось, а решение демозадания вместе со всем вариантом — в разборе демоверсии 2027. Если Python ещё не отработан, начни с Python с нуля для ЕГЭ.

Короткий итог

Задание 5 в 2027 году — правило над двоичной записью и вопрос «наименьшее R, превышающее X». R не растёт вместе с N, поэтому решение — перебор всех N до запаса, список подходящих R и min, без break. На демоверсии ответ 100 при N = 9, а первый по порядку результат 115 — ловушка.

Задания 5 в форме 2027 года с автопроверкой есть в TuteMe: в каждом X подобран так, что перебор с break даёт неверный ответ.

Попробовать бесплатно →

Частые вопросы

Что изменилось в задании 5 в 2027 году

Вопрос. Автомат над двоичной записью был и в демоверсии 2026: по числу N строится двоичная запись, к ней дописываются цифры по правилу, результат переводится обратно в десятичную систему; там спрашивали наименьшее N, при котором R не меньше 200. В демо 2027 спрашивают наименьшее R, превышающее заданное число. Главная особенность: R не растёт вместе с N, поэтому первый подходящий результат при переборе — не минимальный.

Как работает алгоритм из демоверсии 2027

Если N чётное, к двоичной записи справа и слева дописываются по две единицы; если нечётное — справа дописываются два нуля, а слева единица. Полученная запись — это R в двоичной системе. Для N = 13 (1101) получается 1110100 = 116, для N = 6 (110) — 1111011 = 123.

Почему нельзя остановиться на первом R, большем X

Потому что R не монотонно по N. Для чётных N результат примерно 4N + 3 + 3·2^(k+2), для нечётных — 4N + 2^(k+2), где k — длина двоичной записи. Это две разные ветки, и N = 4 даёт R = 115, а N = 9 даёт R = 100. Перебор с break на первом R > 95 вернёт 115, а правильный ответ — 100.

Как решать задание 5 на Python

Функция rule(n) повторяет правило над bin(n)[2:] и возвращает int(s, 2). Дальше цикл по N до запаса, список всех R, удовлетворяющих условию, и min по нему. Никаких break. Код — в статье, на демоверсии он печатает 100.

До какого N перебирать

Результат R всегда больше N в этой форме: запись удлиняется на три-четыре разряда, то есть R не меньше 8N. Значит, для R чуть больше X достаточно перебрать N до X. Запас в два-три раза ничего не стоит, а пустой список ответов — верный признак, что граница мала.

Как решить задание 5 руками, без Python

Разбей N на чётные и нечётные и выпиши R для первых десяти-двенадцати значений: таблица из статьи занимает минуту. В ней видно, что подходят 100 (N = 9), 108 (N = 11), 115 (N = 4), и наименьший — 100. Для больших X ручной перебор уже неудобен.

Какие ещё вопросы бывают в задании 5

Наименьшее N, при котором R попадает в заданный отрезок; сколько различных R лежит в отрезке; наибольшее R, не превышающее X. Схема одна: собрать все пары (N, R) до запаса и выбрать по условию вопроса. Отличается только последняя строка кода.

Сколько баллов и времени стоит задание 5

Один первичный балл, базовый уровень, четыре минуты по спецификации 2027. С готовой функцией rule и циклом задание решается за две минуты; ловушка с break стоит балла, поэтому min по списку — обязательная привычка.

Готов применять на практике?

В тренажёре TuteMe — 1250 заданий ЕГЭ по информатике с автоматической проверкой и подробным разбором. AI-помощник подсказывает, где ты ошибаешься, и подбирает задания под твой уровень.

Начать бесплатно →

Не пишешь код? Курс «Python для ЕГЭ» — с нуля, первые два модуля бесплатно.