(Н. Сафронов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300425.\)
Найдите все натуральные числа, не превосходящие \(10^7,\) для которых выполняются одновременно все условия:
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, справа от каждого числа – сумму его делителей.
Решение:
Python
from fnmatch import fnmatch
res = []
st = (202 // 53) * 53
for n in range(st, 10**7, 53):
ns = str(n)
if fnmatch(ns, '*2?2*') and ns == ns[::-1]:
divs = {d for i in range(1, int(n ** 0.5) + 1) if n % i == 0
for d in (i, n // i)}
if len(divs) > 30:
print(n, sum(divs))
Ответ:
\(212212 \,\, 508032\)
\(2527252 \,\, 5588352\)
\(4282824 \,\, 13789440\)
\(4626264 \,\, 11787120\)
\(8125218 \,\, 19595520\)
\(8824288 \,\, 19908504\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене