(Ю. Дрождинин) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4{?}5\) соответствуют числа \(123405\) и \(12300405.\)
Пусть так же \(M\) – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то значение \(M\) признаётся равным нулю. Среди натуральных чисел, не превышающих \(10^{10},\) найдите все числа, соответствующие маске \(6{?}38{*}9{?}5,\) делящиеся на \(1945\) без остатка, для которых \(M\) оканчивается на \(792.\) В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – сумму цифр значения \(M.\)
Решение:
Python
from fnmatch import fnmatch
def M(n):
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return i + n // i
return 0
st = 6038905 + (1945 - 6038905 % 1945) % 1945
for x in range(st, 10**10, 1945):
m = M(x)
if fnmatch(str(x), '6?38*9?5') and m % 1000 == 792:
print(x, sum(int(z) for z in str(m)))
Ответ:
\(613808935 \,\, 37\)
\(683828935 \,\, 46\)
\(6238748935 \,\, 52\)
\(6538278935 \,\, 45\)
\(6938948935 \,\, 61\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене