Тип 25 № 84719 
Обработка целочисленной информации. Маска числа
i
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную нечётную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123 415 и 12 300 475.
Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 5?34?71*2, делящиеся на 2026 без остатка.
В ответе запишите все найденные числа в порядке возрастания.
Решение. Приведем решение на языке Python.
from fnmatch import *
for x in range (0, 10**10, 2026):
if fnmatch(str(x),'5?34?71*2'):
if str(x)[1] in '13579' and str(x)[4] in '13579':
print(x)
В результате работы программа должна вывести следующее:
553497122
5134171692
5134971962
5734171592
5734971862
Приведем решение Юрия Красильникова на языке Python.
from itertools import product
odd='13579'
d='0123456789'
twod=[''.join(x) for dl in range(3) for x in product(d,repeat=dl)]
a=sorted([int(f'5{x}34{y}71{z}2') for x in odd for y in odd for z in twod])
for y in [x for x in a if x%2026==0]: print(y)
Приведем решение Юрия Красильникова на языке Python.
from re import fullmatch
for x in range (2026, 10**10, 2026):
if fullmatch(r'5[13579]34[13579]71\d*2',str(x)): print(x)
Ответ: 553497122&5134171692&5134971962&5734171592&5734971862
84719
553497122 5134171692 5134971962 5734171592 5734971862