Задание №25 ЕГЭ Информатика с ответом и решением
Ответ: 464967 41764977 406444977 436439907 464337927 464884947
Условие
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Например, маске 123*4?5 соответствуют числа 123405 и 12376415.
Найдите все натуральные числа, не превышающие 109, которые соответствуют маске 4*64*9?7 и при этом без остатка делятся на 9117. В ответе запишите все найденные числа в порядке возрастания.
Подсказки — как подойти к решению
- В маске две звёздочки, и каждая может быть пустой, поэтому подходящие числа заметно различаются по длине. Перебирай кратные делителю из условия и проверяй маску целиком.
- Числа в ответе идут по возрастанию и все должны быть найдены: длина звёздочки не ограничена одним символом, поэтому не теряй ни короткие, ни длинные варианты.
Решение
Будем последовательно рассматривать каждое целое число, кратное 9117, затем каждое число проверять на соответствие маске.
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**9, 9117):
# Перебираем все числа от 0 с шагом 9117, будут получены числа кратные 9117
if fnmatch(str(x), '4*64*9?7'):
# Проверяем полученное число соответствию заданию
print(x)
В результате работы программа должна вывести следующее:
464967
41764977
406444977
436439907
464337927
464884947
Ответ: 464967&41764977&406444977&436439907&464337927&464884947
Типичные ошибки
- Число соответствует маске, но не делится на делитель из условия. Проверяй оба требования для каждого кандидата и не выписывай просто похожие числа.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №25 по информатике