Задача #2212

Делители и маски

Сложнее ЕГЭ

(С.Якунин) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

- символ «?» означает ровно одну произвольную цифру;
- символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
- символ «N» означает произвольное составное число.

Например, маске 12N3*4?5 соответствуют числа 12253405 и 12300405.

Среди чисел до 108 найдите числа, удовлетворяющие маске 1N03*6*, кратные числу 22768.

В ответе запишите: в первом столбце - сами числа в порядке возрастания, во втором - чему равно число N в этих числах (без незначащих нулей).

Примечание: пустая последовательность не является числом.

Ответ
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть

Ответ

12203648
22
14503216
45
15960368
596
18032256
8
from fnmatch import *

def prime(x):
return x>1 and all(x%d != 0 for d in range(2, int(x**0.5)+1))

for i in range(22768, 10**8, 22768):
if fnmatch(str(i), '1*03*6*'):
rub = str(i)[str(i).index('1')+1:str(i).find('03')]
if len(rub)>0 and rub[0]!='0' and not(prime(int(rub))):
print(i, rub)
Быстрый переход
Перейти к задаче