ЕГЭ информатика 5 задание разбор, теория, как решать.

Задание 5. Алгоритм с переводом в систему счисления

В этом типе заданий по информатике (ЕГЭ / СтатГрад) даётся алгоритм обработки числа N:
сначала число переводится в другую систему счисления (чаще в двоичную, иногда в троичную),
потом к полученной записи что-то дописывается по условию (в зависимости от делимости),
после чего результат снова переводится в десятичную систему. Вопрос обычно формулируется так:
«найдите минимальное N, для которого …» или «каково наибольшее значение R».

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

  1. Перевод в двоичную систему в Python: bin(n)[2:]
    Пояснение: bin(n) даёт строку вида '0b1011', поэтому берём срез с 3-го символа.
  2. Перевод в троичную систему: в Python нет готовой функции, поэтому пишем свою:
  3. Обратный перевод:
    • из двоичной строки: int(s, 2)
    • из троичной строки: int(s, 3)
  4. Целочисленное деление: n // 5 — поделить на 5 и отбросить дробную часть.
  5. Перебор N: такие задачи почти всегда решаются перебором чисел снизу:

Общий алгоритм решения

  1. Организовать перебор возможных значений N (например, от 1 до 10000).
  2. Построить запись числа в нужной системе счисления (2 или 3).
  3. Применить правило из условия:
    • если N делится на указанное число → приписать одну строку;
    • иначе → приписать другую строку (или приписать запись другого числа).
  4. Полученную строку перевести обратно в десятичную систему — это и есть R.
  5. Проверить условие из задачи (например, R >= 783 и N нечётное).
  6. В зависимости от формулировки:
    • либо вывести первое подходящее N (если просят «минимальное»);
    • либо просмотреть все и взять максимальное R (если просят «наибольшее R»).

Пример (двойичная версия, как в демо / СтатГрад)

Условие типа: «Записать число N в двоичной системе. Если N делится на 5, то приписать справа
две единицы. Иначе приписать справа двоичную запись числа N // 5. Полученную двоичную запись считать двоичным числом.
Найти минимальное нечётное N, для которого результат не меньше 783.»

Функция правила:

1. Поиск минимального N

Использовать, когда в задаче: «укажите минимальное N …».

Идея: перебираем по возрастанию и останавливаемся на первом подходящем — это и есть минимальное.

2. Поиск максимального R

Использовать, когда в задаче: «каково наибольшее значение R»,
«при каком N алгоритм выдаст максимальный результат» и т.п.

Идея: просматриваются все возможные N, запоминается самое большое значение R
и то N, при котором оно получилось. В отличие от случая «минимальное N», здесь нельзя делать break сразу.

Троичная версия

Если в условии: «запишите число в системе счисления с основанием 3», нужно заменить только две части:
функцию перевода и основание при обратном переводе.

Дальше используется тот же шаблон: либо «поиск минимального N», либо «поиск максимального R».

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

  • не убирают префикс '0b' у двоичной строки;
  • используют деление / вместо целочисленного //;
  • сначала переводят в десятичную, а потом пытаются дописать — нужно наоборот;
  • забывают ограничение «чётное/нечётное N» в условии;
  • для задачи «найти наибольшее R» преждевременно выходят из цикла.

Примечание. Такой шаблон покрывает задания из демоверсий, СтатГрада и большинства региональных вариантов, где нужно «приписать что-то к записи числа». В реальном варианте меняются только: основание (2 или 3), условие приписки и проверка в конце (поиск минимального N или максимального R).