Задание №25 ЕГЭ Информатика с ответом и решением
Ответ: 12363957 120663351 120963159 124763850 125063658
Условие
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415. Найдите все натуральные числа, не превышающие 109, которые соответствуют маске 12*63?5? и при этом без остатка делятся на 3123.
В ответе запишите все найденные числа в порядке возрастания.
Подсказки — как подойти к решению
- Маска начинается с фиксированных цифр, поэтому удобно перебирать числа, кратные делителю: шаг перебора равен самому делителю, и проверка делимости становится ненужной.
- Разбирая маску, помни: «*» — любая последовательность цифр произвольной длины, в том числе пустая, а «?» — ровно одна цифра. Из-за звёздочки подходящие числа имеют разное количество разрядов.
- Сверяй с маской всё число целиком, а не только его начало: цифры, стоящие после звёздочки, тоже обязаны попасть на свои места. Найденные числа выведи по возрастанию.
Решение
Приведем решение на языке 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 по информатике