Задание 25 ЕГЭ по информатике: маска числа и поиск делителей
Подтемы
- Маска числа27 задач
- Нахождение делителей38 задач
Что проверяет задание
Задание 25 проверяет умение работать с целыми числами в десятичной системе счисления без калькулятора: раскладывать число по разрядам, вычислять остатки от деления, решать простые линейные сравнения и аккуратно перебирать конечное число вариантов. Формально тема называется «обработка целочисленной информации», но по сути это алгебраически-комбинаторная задача: маска задаёт целое семейство чисел, и среди них нужно найти те, что делятся на заданное число без остатка, уложившись в ограничение по величине.
Здесь одновременно проверяются три навыка: понимание позиционной записи числа, работа с модульной арифметикой (остатки, свойства сложения и умножения по модулю) и системный перебор — умение свести большое или бесконечное множество вариантов к небольшому, которое можно проверить руками.
Как выглядит формулировка и сколько баллов
Типичная формулировка: даётся определение маски (символ «?» — одна произвольная цифра, символ «» — произвольная последовательность цифр, включая пустую), приводится конкретная маска вида «12345?7?8» или «1?49341», указывается верхняя граница (например, или ) и делитель (23, 2023, 3123 и т.п.). Нужно найти все натуральные числа, соответствующие маске, не превышающие границу и кратные делителю, а затем выписать их в порядке возрастания. Иногда дополнительно требуется указать частное от деления каждого числа на делитель.
Задание оценивается в 2 первичных балла. Полный балл ставится только за полностью верный и полный список чисел (без лишних и без пропущенных), 1 балл — если допущена одна ошибка, 0 баллов — при большем числе ошибок. Поэтому важно не просто найти решения, но и убедиться, что перебраны все случаи, включая пустую подстановку для «*».
Что нужно знать
- Позиционная запись: число длиной цифр записывается как , где — старшая цифра.
- «?» задаёт ровно одну цифру – в фиксированной позиции; «*» задаёт произвольную (в том числе пустую) последовательность цифр, то есть переменную длину блока.
- Длина числа по маске равна сумме длин всех фиксированных символов и выбранной длины каждого блока «*».
- Свойства остатков: , .
- Линейное сравнение имеет решение, если делит ; при решение единственно по модулю и находится через обратный элемент (расширенный алгоритм Евклида).
- Признаки делимости на 2, 3, 5, 9, 10, 11 полезны для быстрой проверки отдельных кандидатов.
- Верхняя граница числа жёстко ограничивает максимально возможную длину числа, а значит и допустимую длину блока «*» — это нужно посчитать первым делом.
Методы решения
- Разложение числа по разрядам. Маска без «*» превращается в линейную функцию от неизвестных цифр. Например, маска «5?3» даёт , где — цифра на месте «?».
- Перебор по цифре «?». Она принимает всего 10 значений, поэтому для каждой неизвестной подставляют и проверяют остаток. Пример: маска «7?4», делитель 9, — перебором находится единственный подходящий .
- Модульное сведение для блока «*». Блок длины обозначают переменной (), а число записывают как . Условие делимости превращается в сравнение , которое решают через обратный элемент, если .
- Ограничение длины по условию. Если сказано «не превышает », сначала находят все допустимые длины итогового числа при разных длинах «*» — обычно это 1–3 варианта, что резко сокращает объём вычислений.
- Признаки делимости как фильтр. Если делитель раскладывается на удобные множители (3, 9, 11), иногда быстрее сначала проверить простые признаки, чтобы отсеять часть вариантов до модульных вычислений.
Алгоритм решения по шагам
- Определить фиксированные и переменные части маски: сколько цифр задано жёстко, где стоят «?», где — «*».
- Из ограничения на число вычислить, какие длины блока «*» вообще допустимы.
- Для каждой допустимой длины записать число как сумму: фиксированная часть слева × степень десяти + значение блока × степень десяти + фиксированная часть справа, с учётом неизвестных «?» как переменных.
- Привести выражение к виду и вычислить нужные степени десяти по модулю .
- Если неизвестных немного — перебрать их значения напрямую; если есть блок «*» — решить линейное сравнение относительно него.
- Отобрать решения, лежащие в допустимом диапазоне: для «?» это –, для блока «*» — –, включая случаи с нулями внутри блока.
- Собрать все числа, отсортировать по возрастанию, при необходимости посчитать частное.
- Проверить, что не пропущен случай пустой подстановки «*».
Разбор примеров
Пример 1. Маска «12345?7?8», граница , делитель 23. Маска без «*», длина числа фиксирована — 9 цифр. Пусть — цифра первого «?», — второго. Тогда Нужно . Перебирая и решая для каждого уравнение относительно (так как , решение единственно), находят шесть пар. Итоговые числа: , а частные от деления на 23: .
Пример 2. Маска «1?493*41», граница , делитель 2023. Фиксированная часть — 7 символов, значит длина числа равна . Поскольку — 11-значное число, а такая длина по этой маске недостижима, реально допустимы и . При : , перебор остатков по модулю 2023 даёт единственное решение , то есть . При обозначим трёхзначный блок как (): Переходя к остаткам по модулю 2023 и решая сравнение относительно для каждого , находят допустимые (в диапазоне –) решения только при , что даёт числа . Итоговый ответ по возрастанию: .
Пример 3. Маска «12*63?5?», граница , делитель 3123. Фиксированная часть — 7 символов, длина числа . Проверяем . При (длина 7): , максимум — кратных 3123 в этом узком диапазоне нет, решений нет. При (длина 8), блок — одна цифра : ; перебор остатков даёт единственное решение , то есть . При (длина 9), блок — двузначное число (): ; решая сравнение по модулю 3123 для допустимых , находят четыре решения: . Итоговый ответ: .
Типичные ошибки и ловушки
- Забыть, что «*» может задавать пустую последовательность — пропускается вариант минимальной длины числа.
- Неверно определить степень десяти для блока «*» из-за ошибки в подсчёте позиций фиксированных символов справа от блока.
- Не учесть ограничение сверху и рассмотреть длины числа, которые заведомо дают числа больше границы.
- Арифметическая ошибка при вычислении — степени лучше считать пошагово, беря остаток на каждом шаге.
- Забыть про возможные нули внутри блока «*», если он стоит не в самом начале числа — такие варианты нужно учитывать.
- Ограничить перебор блока «*» диапазоном – вместо –, случайно исключив числа с нулём в начале блока.
- Ошибка при подсчёте частного во второй колонке ответа — стоит проверять деление в столбик или обратным умножением.
- Выписать числа не по возрастанию или продублировать варианты из разных допустимых длин.
Как готовиться
Регулярно тренируйтесь раскладывать числа по разрядам и переводить условие маски в алгебраическое выражение — без этого навыка невозможно двигаться дальше. Отдельно отработайте технику быстрого вычисления остатков: умение находить последовательным умножением с взятием остатка на каждом шаге экономит время и снижает число ошибок. Разберите расширенный алгоритм Евклида для поиска обратного элемента по модулю — он нужен, когда неизвестная связана с делителем множителем, взаимно простым с модулем.
Прорешайте не менее 10–15 задач с разными масками и делителями, обращая внимание на то, как меняется структура решения в зависимости от количества и расположения блоков «*». Для самопроверки в процессе подготовки полезно перебрать варианты вручную по алгоритму, а затем свериться прямым перебором меньшего диапазона — это помогает понять, на каком шаге чаще возникает ошибка: в разложении по разрядам, в переборе остатков или в границах диапазона.
Наконец, отработайте оформление ответа: числа строго по возрастанию, без пропусков и дублей, при необходимости — с частным от деления. Перед сдачей проверяйте, что учтён случай пустой подстановки «*» и что для каждой допустимой длины числа рассмотрены все её варианты.
Частые вопросы
Может ли символ «*» в маске означать пустую последовательность цифр?
Да, по определению «*» задаёт произвольную последовательность цифр произвольной длины, включая нулевую длину, то есть пустую подстановку. Этот случай обязательно нужно проверять отдельно, иначе можно пропустить решение с минимально возможной длиной числа.
Как понять, сколько цифр может быть у числа, заданного маской?
Длина числа равна сумме длин всех фиксированных символов маски (включая «?», которые всегда дают ровно одну цифру) плюс длина, выбранная для каждого блока «*». Верхняя граница из условия задачи ограничивает набор допустимых длин.
Как быстро находить остаток большого числа от деления, не считая его целиком?
Число раскладывают на сумму слагаемых по разрядам, для каждой степени десяти отдельно находят остаток по модулю делителя, а затем складывают остатки и снова берут остаток от суммы — так работает свойство модульной арифметики для сложения и умножения.
Нужно ли учитывать нули внутри блока «*»?
Да, если блок «*» стоит не в самом начале всего числа, его первая цифра вполне может быть нулём — такие варианты являются законными числами и их нельзя исключать из перебора.
Сколько баллов можно получить за задание 25 и как их ставят?
Задание оценивается максимум в 2 первичных балла: 2 балла — за полностью верный список чисел, 1 балл — если допущена ровно одна ошибка (пропуск или лишнее число), 0 баллов — при большем количестве неточностей.
Обязательно ли писать частное от деления в ответе?
Только если это явно требуется условием — некоторые формулировки просят таблицу из двух столбцов: сами числа и результат их деления на делитель. Если такого требования нет, достаточно списка чисел.
Как понять, какие длины числа вообще нужно проверять при наличии «*»?
Нужно подставить в маску минимальную (нулевую) и последовательно увеличивающуюся длину блока «*», сравнивая получаемую общую длину числа с ограничением из условия, и оставить только те варианты длины, при которых число заведомо не превышает границу.