πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №25 → Задание i25-03

Задание №25 ЕГЭ Информатика с ответом и решением

Ответ: 12363957 120663351 120963159 124763850 125063658

Условие

Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.

Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415. Найдите все натуральные числа, не превышающие 109, которые соответствуют маске 12*63?5? и при этом без остатка делятся на 3123.

В ответе запишите все найденные числа в порядке возрастания.

Подсказки — как подойти к решению

  1. Маска начинается с фиксированных цифр, поэтому удобно перебирать числа, кратные делителю: шаг перебора равен самому делителю, и проверка делимости становится ненужной.
  2. Разбирая маску, помни: «*» — любая последовательность цифр произвольной длины, в том числе пустая, а «?» — ровно одна цифра. Из-за звёздочки подходящие числа имеют разное количество разрядов.
  3. Сверяй с маской всё число целиком, а не только его начало: цифры, стоящие после звёздочки, тоже обязаны попасть на свои места. Найденные числа выведи по возрастанию.

Решение

Приведем решение на языке Python.

from fnmatch import *

for x in range (0, 10**9, 3123):

if fnmatch(str(x),'12*63?5?'):

print(x)

В результате работы программа должна вывести следующее:

12363957

120663351

120963159

124763850

125063658

Ответ: 12363957&120663351&120963159&124763850&125063658

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

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №25 по информатике