Тип 25 № 56525 
Обработка целочисленной информации. Маска числа
i
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415.
Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 1?7246*1 и при этом без остатка делятся на 4173.
В ответе запишите все найденные числа в порядке возрастания.
Решение. Приведём решение на языке Python.
for x in range(10):
s = '1' + str(x) + '72461'
if int(s) % 4173 == 0:
print(s)
for x in range(10):
for y in range(10):
s = '1' + str(x) + '724600' + str(y) + '1'
if int(s) < 10**10 and int(s) % 4173 == 0:
print(s)
for x in range(10):
for y in range(100):
s = '1' + str(x) + '72460' + str(y) + '1'
if int(s) < 10**10 and int(s) % 4173 == 0:
print(s)
for x in range(10):
for y in range(1000):
s = '1' + str(x) + '7246' + str(y) + '1'
if int(s) < 10**10 and int(s) % 4173 == 0:
print(s)
В результате работы программа должна вывести следующее:
1072461
1272460371
1772469231
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**10, 4173):
# Перебираем все числа от 0 с шагом 4173, будут получены числа кратные 4173
if fnmatch(str(x), '1?7246*1'):
# Проверяем полученное число соответствию заданию
print(x)
Ответ: 1072461&1272460371&1772469231
56525
1072461 1272460371 1772469231