Тип 25 № 64955 
Обработка целочисленной информации. Маска числа
i
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Например, маске 123*4?5 соответствуют числа 123405 и 12376415.
Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 1*4182?7 и при этом без остатка делятся на 1991.
В ответе запишите все найденные числа в порядке возрастания.
Решение. Будем последовательно рассматривать каждое целое число, кратное 1991, затем каждое число проверять на соответствие маске.
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**10, 1991):
# Перебираем все числа от 0 с шагом 1987, будут получены числа кратные 1987
if fnmatch(str(x), '1*4182?7'):
# Проверяем полученное число соответствию заданию
print(x)
В результате работы программа должна вывести следующее:
1003418207
1149418237
1295418267
1441418297
1764418227
1910418257
Приведём решение Артёма Гридина на языке Python.
for s in map(str, range(0, 10**10, 1991)):
if (s[0], s[-1], s[::-1][2:6][::-1]) == ('1', '7', '4182'):
print(s)
Ответ: 1003418207&1149418237&1295418267&1441418297&1764418227&1910418257
64955
1003418207 1149418237 1295418267 1441418297 1764418227 1910418257