Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 3?12?14*5, делящиеся
Количество строк в таблице для ответа избыточно.
Ответ:
Будем последовательно рассматривать каждое целое число,
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**10, 1917):
# Перебираем все числа от 0 с шагом 1917, будут получены числа кратные 1917
if fnmatch(str(x), '3?12?14*5'):
# Проверяем полученное число соответствию заданию
print(x, x//1917)
В результате работы программа должна вывести следующее:
351261495 183235
3212614035 1675855
3412614645 1780185
3712414275 1936575
3912414885 2040905
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
d='0123456789'
twod=[''.join(x) for dl in range(3) for x in product(d,repeat=dl)]
a=sorted([int(f'3{x}12{y}14{z}5') for x in d for y in d for z in twod])
for y in [x for x in a if x%1917==0]: print(y,y//1917)

