Тип 25 № 55642 
Обработка целочисленной информации. Маска числа
i
Маска числа — это последовательность цифр, в которой могут встречаться специальные символы «?» и «*». Символ «?» означает ровно одну произвольную цифру, символ «*» означает произвольную (в том числе пустую) последовательность цифр.
Пример. Маске 123*4?5 соответствуют числа 123405 и 12376415.
Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 1?6961*5 и при этом без остатка делятся на 3013.
В ответе запишите все найденные числа в порядке возрастания.
Решение. Приведём решение на языке Python.
for x in range(10):
s = '1' + str(x) + '69615'
if int(s) % 3013 == 0:
print(s)
for x in range(10):
for y in range(1000):
s = '1' + str(x) + '696100' + str(y) + '5'
if int(s) < 10**10 and int(s) % 3013 == 0:
print(s)
for x in range(10):
for y in range(1000):
s = '1' + str(x) + '69610' + str(y) + '5'
if int(s) < 10**10 and int(s) % 3013 == 0:
print(s)
for x in range(10):
for y in range(1000):
s = '1' + str(x) + '6961' + str(y) + '5'
if int(s) < 10**10 and int(s) % 3013 == 0:
print(s)
В результате работы программа должна вывести следующее:
1069615
1769610225
1869611695
1969613165
Приведём решение Артёма Гридина на языке Python.
for i in range(0, 10**10, 3013):
s = str(i)
if s[0] == '1' and s[2:6] == '6961' and s[-1] == '5':
print(s)
Приведём решение Андрея Тухманова на языке Python.
from fnmatch import *
for i in range(0, 10 ** 10, 3013):
if fnmatch(str(i), '1?6961*5'):
print(i)
Ответ: 1069615&1769610225&1869611695&1969613165
55642
1069615 1769610225 1869611695 1969613165