Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4?5\) соответствуют числа \(123405\) и \(12300425.\)
Найдите все натуральные числа, не превышающие \(10^9,\) которые соответствуют маске \(?54{*}32{*}1\) и при этом без остатка делятся на \(7863.\) В ответе запишите все найденные числа, справа от каждого числа – сумму его цифр. Отсортируйте числа в порядке возрастания суммы цифр, а при одинаковой сумме цифр – по возрастанию самого числа.
Решение:
Python
from fnmatch import fnmatch
st = 154321 + (7863 - 154321 % 7863) % 7863
ans = []
for n in range(st, 10**9, 7863):
ns = str(n)
if fnmatch(ns, '?54*32*1'):
ans.append((sum(int(z) for z in ns), n))
ans.sort()
for s, n in ans:
print(n, s)
Ответ:
\(154327101 \,\, 24\)
\(95433231 \,\, 30\)
\(454143291 \,\, 33\)
\(554632431 \,\, 33\)
\(954623241 \,\, 36\)
\(554868321 \,\, 42\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене