ЕГЭ Информатика 2023: Решение задачи 25 (маски чисел)

Задание высокого уровня сложности, проверяющее умение создавать программы для обработки целочисленной информации. На его выполнение отводится около 20 минут.

Условие задачи

Маской числа назовём последовательность цифр, в которой могут встречаться символы:

  • ? — ровно одна произвольная цифра.
  • * — любая последовательность цифр (включая пустую).

Необходимо найти все натуральные числа, не превышающие 10<sup>10</sup>, соответствующие маске 1?2139*4 и делящиеся на 2023 без остатка. В ответе указать найденные числа и результаты их деления на 2023.

Алгоритм решения

Задача решается перебором чисел, кратных 2023, начиная с 2023 с шагом 2023 до 10<sup>10</sup>. Это гарантирует, что все проверяемые числа будут делиться на 2023.

Для удобства работы с цифрами числа преобразуются в строку. Проверка соответствия маске:

  1. Проверяется, что первый символ строки равен 1.
  2. Проверяется, что символы со второго по пятый совпадают с 2139.
  3. Проверяется, что последний символ строки равен 4.

Если все условия выполняются, число и результат его деления на 2023 выводятся в качестве ответа.

Реализация на языке программирования (фрагмент)

Код реализует описанный алгоритм. Основные этапы проверки маски:

# ... (код перебора чисел, кратных 2023) ...

s = str(i) # Преобразование числа в строку

if s[0] == '1' and s[1:5] == '2139' and s[-1] == '4':
    print(i, i // 2023) # Вывод числа и результата деления

# ... (конец кода) ...

Результат

Результат выполнения программы — список чисел, удовлетворяющих условиям задачи, и соответствующие результаты их деления на 2023. (Конкретные значения опущены, так как зависят от реализации программы).

Задание 25 может быть эффективно решено за значительно меньшее время, чем отведено на его выполнение (около 5 минут вместо 20). Ключевой момент — оптимизация перебора чисел и грамотная обработка маски.

Что будем искать? Например,программа