Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300405.
Найдите все натуральные числа, не превосходящие 108, для которых выполнены
все условия:
— соответствуют маске 1?4*6?8;
— делятся на 2622 без остатка.
В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, справа от каждого числа их частное от деления
Ответ:
Будем последовательно рассматривать каждое целое число,
Приведём решение на языке Python.
from fnmatch import *
for x in range(0, 10**8, 2622):
# Перебираем все числа от 0 с шагом 2622, будут получены числа кратные 2622
if fnmatch(str(x), '1?4*6?8'):
# Проверяем полученное число соответствию заданию
print(x, x // 2622)
В результате работы программа должна вывести следующее:
154698 59
11468628 4374
12425658 4739
15401628 5874
16476648 6284
17433678 6649
19452618 7419

