Тип 25 № 63074 
Обработка целочисленной информации. Маска числа
i
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Например, маске 123*4?5 соответствуют числа 123405 и 12376415.
Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 1*4239?7 и при этом без остатка делятся на 3147.
В ответе запишите все найденные числа в порядке возрастания.
Решение. Будем последовательно рассматривать каждое целое число, кратное 3147, затем каждое число проверять на соответствие маске.
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**10, 3147):
# Перебираем все числа от 0 с шагом 3147, будут получены числа кратные 3147
if fnmatch(str(x), '1*4239?7'):
# Проверяем полученное число соответствию заданию
print(x)
В результате работы программа должна вывести следующее:
100423917
176423967
1374423927
1450423977
1973423907
Приведём решение Михаила Глинского на языке Python.
for x in range(1423907,10**10):
if x%3147 == 0:
a = x
break
for x in range(a,10**10,3147):
s = str(x)
if s[-1]=='7' and s[-6:-2]=='4239' and s[0]=='1':
print(x)
Ответ: 100423917&176423967&1374423927&1450423977&1973423907
63074
100423917 176423967 1374423927 1450423977 1973423907