Тип 25 № 59850 
Обработка целочисленной информации. Маска числа
i
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Найдите все натуральные числа, не превосходящие 108, для которых выполнены
все условия:
— соответствуют маске 1?4*6?8;
— делятся на 2622 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, справа от каждого числа их частное от деления на 2622.
Решение. Будем последовательно рассматривать каждое целое число, кратное 2622, затем каждое число проверять на соответствие маске.
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**8, 2622):
# Перебираем все числа от 0 с шагом 2622, будут получены числа кратные 2622
if fnmatch(str(x), '1?4*6?8'):
# Проверяем полученное число соответствию заданию
print(x, x // 2622)
В результате работы программа должна вывести следующее:
154698 59
11468628 4374
12425658 4739
15401628 5874
16476648 6284
17433678 6649
19452618 7419
Ответ: 154698&59&11468628&4374&12425658&4739&15401628&5874&16476648&6284&17433678&6649&19452618&7419
59850
154698 59 11468628 4374 12425658 4739 15401628 5874 16476648 6284 17433678 6649 19452618 7419