Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4?5\) соответствуют числа \(123405\) и \(12300425.\)
Найдите все натуральные числа, не превышающие \(10^9,\) которые соответствуют маске \(?13{*}79{*}9\) и при этом без остатка делятся на \(7521.\) В ответе запишите все найденные числа, справа от каждого числа – сумму его цифр. Отсортируйте числа в порядке возрастания суммы цифр, а при одинаковой сумме цифр – по возрастанию самого числа.
Решение:
Python
from fnmatch import fnmatch
st = 113799 + (7521 - 113799 % 7521) % 7521
ans = []
for n in range(st, 10**9, 7521):
ns = str(n)
if fnmatch(ns, '?13*79*9'):
ans.append((sum(int(z) for z in ns), n))
ans.sort()
for s, n in ans:
print(n, s)
Ответ:
\(413045799 \,\, 42\)
\(613179609 \,\, 42\)
\(41357979 \,\, 45\)
\(913417929 \,\, 45\)
\(413797899 \,\, 57\)
\(713885799 \,\, 57\)
\(913793979 \,\, 57\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене