Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
—
—
Например, маске 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)

