*(Д. Муфаззалов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
Например, маске \(123{*}4?5\) соответствуют числа \(123405\) и \(12300425.\)
Среди натуральных чисел, меньших числа \(10^{11},\) найдите все числа, соответствующие маске \({*}2025{*}\) и оканчивающиеся на цифру больше единицы, количество делителей которых является нечетным простым числом. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – их наибольшие делители, не равные самому числу.
Решение:
Python
from fnmatch import fnmatch
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
ans = []
for k in (2, 4, 6, 10):
for n in range(2**5, int((10**11)**(1/k)) + 1):
if is_prime(n):
t = n ** k
if fnmatch(str(t), '*2025*') and t % 10 > 1:
ans.append((n**k, n**(k - 1)))
ans.sort()
for n, d in ans:
print(n, d)
Ответ:
\(2025630049 \,\, 45007\)
\(12025973569 \,\, 109663\)
\(18202596889 \,\, 134917\)
\(20256974929 \,\, 142327\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене