ex exxam.ru
Задания5 из 27
01 Графы: схема дорог и таблица расстояний 02 Логика: фрагмент таблицы истинности, порядок столбцов 03 Базы данных: поиск информации в связанных таблицах 04 Кодирование: условие Фано и двоичное дерево кода 05 Двоичная запись числа: алгоритм строит новое число текущее06 Исполнитель Черепаха: движение и подсчёт точек 07 Информационный объём: звук и изображения 08 Подсчёт слов: лексикографический список и перебор 09 Электронные таблицы: подсчёт строк по условию 10 Текстовый документ: поиск сочетаний букв по условию 11 Объём данных: мощность алфавита и кодирование 12 Исполнитель МТ (машина на ленте): чтение программы 13 IP-адреса и маски сетей TCP/IP 14 Арифметические выражения и системы счисления 15 Логика: истинность выражения с отрезками и предикатами 16 Рекурсивные функции: чтение и счёт по формулам 17 Обработка целочисленной информации: поиск пар в файле 18 Динамическое программирование: Робот-сборщик монет 19 Игры: выигрышная стратегия первым ходом (куча) 20 Игры: победа Пети своим вторым ходом (куча) 21 Игры: победа Вани первым или вторым ходом (куча) 22 Многопоточные вычисления: максимальное число одновременных процессов 23 Динамика: количество программ исполнителя 24 Обработка символьных строк: поиск подстроки по условию 25 Перебор чисел: делители и сумма M 26 Задание 26 нужны файлы27 Задание 27 нужны файлы
5
1 балл демоверсия ЕГЭ-2026 сборник

Двоичная запись числа: алгоритм строит новое число

Задание 5 · Билет 2 · ЕГЭ по информатике

Билет 1 — демоверсия ЕГЭ-2026; остальные билеты — задания в формате экзамена (открытый сборник или тренировочные по образцу). Это тренировочные материалы, а не официальные КИМ. Ответы пересчитаны и сверены.

Условие

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

  1. Строится двоичная запись числа N.
  2. Если исходное число N чётное, то справа к двоичной записи приписывается 0, если нечётное — 1.
  3. Полученная запись обрабатывается по правилу:
    • а) если количество единиц в записи кратно 3, два левых разряда заменяются на 11;
    • б) если количество единиц не кратно 3, два левых разряда заменяются на 10.
    Полученная запись — двоичная запись числа R.
Например: N=610=1102 → 10002=810; N=310=112 → 1112=710.
Вопрос. Укажите максимальное число N, после обработки которого получается R, не большее 37.

Попробуйте программой

Необязательно, но удобно: напишите здесь свой код на Python, который найдёт ответ. Если не получится — откройте решение и вставьте готовую программу одной кнопкой.

Решите программой на Python

в браузере

Напишите свой код, который найдёт ответ, и нажмите «Выполнить». Горячая клавиша запуска: Ctrl/⌘ + Enter.

Результат
Здесь появится вывод print().
Не знаешь, как решать?

Потренируйся выполнять алгоритм по шагам: переведи N в двоичную, измени биты и вернись в десятичную.

Открыть тренажёр

Решение

Решение

открыто шагов: 12 из 12
1 Шаг 1
Переписываем правило из условия. К двоичной записи числа N справа приписываем её последний бит: если N чётное — 0, если нечётное — 1. Затем считаем количество единиц: если оно кратно 3, два левых разряда заменяются на 11, иначе — на 10. Полученная запись — двоичная запись числа R.
2 Шаг 2
Проверяем правило на примерах. N=6 → 110 → приписываем 0 → 1100 (единиц 2, не кратно 3) → 11 меняем на 10 → 10002 = 8 ✓. N=3 → 11 → приписываем 1 → 111 (единиц 3, кратно 3) → 11 остаётся → 1112 = 7 ✓. Правило понято верно.
3 Шаг 3
Что ищем и в каком направлении. Нужно максимальное N, для которого R ≤ 37. Значения R(N) идут немонотонно, поэтому искать «на глаз» нельзя — только перебором. Так как нужен максимум, перебираем N сверху вниз и берём первое подходящее. Дальше для каждого N повторяем один и тот же порядок действий из следующих шагов.
4 Шаг 4
Двоичная запись N. Переводим текущее N в двоичную систему, например делением на 2 с остатком.
5 Шаг 5
Приписываем последний бит. Справа к записи дописываем её последнюю цифру: у чётного N это 0, у нечётного — 1 (бит чётности).
6 Шаг 6
Считаем единицы. Считаем, сколько единиц в полученной записи.
7 Шаг 7
Заменяем два левых разряда. Если единиц кратно 3 — ставим на их место 11, иначе — 10.
8 Шаг 8
Переводим обратно в десятичную. Полученная запись — это двоичная запись числа R; переводим её в десятичную и получаем R(N).
9 Шаг 9
Сравниваем R(N) с 37. Если R(N) ≤ 37 — при переборе сверху вниз это и есть искомое N, останавливаемся. Иначе берём следующее N (на 1 меньше) и повторяем шаги 4–8.
10 Шаг 10
Разбираем пример: N=26. 26 = 110102. Приписываем последний бит 0 → 1101002. Единиц 3 — кратно 3, значит два левых разряда заменяем на 11, и запись не меняется. Переводим: 1101002 = 52. Так как 52 > 37, N=26 не подходит — переходим к следующему N=25.
11 Шаг 11
Находим ответ. N=25: 25 = 110012 → приписываем 1 → 1100112 (единиц 4, не кратно 3) → два левых разряда заменяем на 10 → 1000112 = 35 ≤ 37. Это первое подходящее N при переборе сверху вниз, значит максимальное N = 25. Соседи: N=24 → R=32, N=25 → R=35, N=26 → R=52.
12 Шаг 12
Почему удобнее программой. Шаги 4–8 — один и тот же набор действий, повторённый для каждого N. Вручную это десятки однотипных операций (перевод в двоичную, подсчёт единиц, замена разрядов, обратный перевод), и одна арифметическая ошибка ломает ответ. Надёжнее один раз описать функцию R(N) и поручить перебор компьютеру: готовая программа — сразу под шагами, её можно вставить в песочницу выше одной кнопкой и запустить.

Программа, которая находит ответ:

def R(N):                          # функция: по числу N возвращает число R
    b = f'{N:b}'                   # 1) переводим N в двоичную запись (строка из 0 и 1)
    b += b[-1]                     # 2) приписываем справа последний бит: 0 для чётного, 1 для нечётного
    if b.count('1') % 3 == 0:      # 3) если количество единиц кратно 3 ...
        b = '11' + b[2:]           #    ... заменяем два левых разряда на 11
    else:                          # 4) иначе ...
        b = '10' + b[2:]           #    ... заменяем два левых разряда на 10
    return int(b, 2)               # 5) переводим запись обратно в десятичную и возвращаем R

for N in range(100, 1, -1):        # 6) перебираем N сверху вниз: нужен максимум
    if R(N) <= 37:                 # 7) проверяем условие R ≤ 37
        print(N)                   # 8) первое подходящее сверху — это ответ
        break                      # 9) останавливаемся, дальше искать не нужно

Правильный ответ этого билета: 25
Проверка: N=25 → R=35 ≤ 37, а R(26)=52 > 37. Ответ совпадает с опубликованным в источнике.

Теория и другие билеты

Разбор с нуля, типовые ошибки, частые вопросы и все билеты задания 5 — на странице задания.

Задание 5: теория и другие билеты Практикум