Маска числа – это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Например, маске 123*4?5 соответствуют числа 123405 и 12376415.
Найдите все натуральные числа, принадлежащие интервалу [108; 2·108], которые соответствуют маске ?*34*49 и имеют ровно три натуральных делителя.
В ответе запишите все найденные числа в порядке возрастания.
СтатГрад Вариант ИН2410202 17 декабря 2024 – задание №25
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from fnmatch import * def m(x): a = set() for i in range(2, int(x**0.5)+1): if x % i == 0: a.add(i) a.add(x // i) if len(a) == 1: return True return False for i in range(10**8, 2*(10**8)+1): if fnmatch(str(i), '?*34*49'): if m(i) == True: print(i) |
или
|
1 2 3 4 5 6 7 8 9 |
from fnmatch import * def m(x): for i in range(2, int(x**0.5)): if x % i == 0: return False return True for i in range(10**8, 2*(10**8)+1): if i**0.5 == int(i**0.5) and fnmatch(str(i), '?*34*49') and m(i): print(i) |
Ответ:
109348849
134397649
152349649
193404649
