Условие: № 6210 (Уровень: Средний) (Н. Сафронов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: Например, маске 123*4?5 соответствуют числа 123405 и 12300425.
Найдите все натуральные числа, не превосходящие 10**7, для которых выполняются одновременно все условия: В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — сумму делителей. def Divisors(x):
divisors = set()
for j in range(1, int(x**0.5)+1):
if x % j == 0:
divisors.add(j)
divisors.add(x // j)
return sorted(divisors)
from fnmatch import *
for x in range(53, 10**7, 53):
if fnmatch(str(x), '*2?2*'):
if str(x) == str(x)[::-1]:
if x % 53 == 0:
diviors = Divisors(x)
if len(diviors) > 30:
print(x, sum(diviors)) Комментарии к решению задачи: from fnmatch import *
for x in range(53, 10**7, 53):
if fnmatch(