(А. Агафонцев) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Среди чисел не превышающих \(10^7,\) найдите \(5\) наибольших чисел, удовлетворяющих маске \(9{?}{*}55{*}7.\) Выведите эти числа в порядке возрастания, справа от каждого числа выведите остаток от деления суммы его делителей на \(21.\)
Решение:
Python
from math import isqrt
q = 0
ans = []
for n in range(10**7, 0, -1):
ns = str(n)
if ns[0] == '9' and ns[-1] == '7' and '55' in ns[2:-1] :
divs = {d for x in range(1, isqrt(n) + 1) if n % x == 0
for d in (x, n // x)}
q += 1
ans.append((n, sum(divs) % 21))
if q == 5:
break
for n, r in ans[::-1]:
print(n, r)
Ответ:
\(9995597 \,\, 18\)
\(9996557 \,\, 12\)
\(9997557 \,\, 12\)
\(9998557 \,\, 17\)
\(9999557 \,\, 0\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене