Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4?5\) соответствуют числа \(123405\) и \(12300425.\)
Найдите все натуральные числа, не превышающие \(10^9,\) которые соответствуют маске \(?05{*}22{*}3\) и при этом без остатка делятся на \(8587.\) В ответе запишите все найденные числа, справа от каждого числа – сумму его цифр. Отсортируйте числа в порядке возрастания суммы цифр, а при одинаковой сумме цифр – по возрастанию самого числа.
Решение:
Python
from fnmatch import fnmatch
st = 105223 + (8587 - 105223 % 8587) % 8587
ans = []
for n in range(st, 10**9, 8587):
ns = str(n)
if fnmatch(ns, '?05*22*3'):
ans.append((sum(int(z) for z in ns), n))
ans.sort()
for s, n in ans:
print(n, s)
Ответ:
\(40522053 \,\, 21\)
\(205220713 \,\, 22\)
\(2052293 \,\, 23\)
\(505422233 \,\, 26\)
\(805022663 \,\, 32\)
\(305946223 \,\, 34\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене