Назовем маской числа последовательность цифр, в которой также могут встречаться следующие символы,
– символ «?»означает ровно одну произвольную цифру
– символ «*»означает любую последовательность цифр произвольной длины, в том числе и пустую последовательность
Среди натуральных чисел, не превышающих найдите все числа, соответствующие маске 9??5*1*?3, кратных на 111. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания через пробел.
Решение через циклы
# для оптимизации делаем цикл с шагом 111 с числа кратного 111, таким образом, мы будем проходиться только по кратным 111 числам
for i in range(9005208, 10 ** 7 + 1, 111):
s = str(i)
if s[0] == ’9’ and s[3] == ’5’ and s[4] == ’1’ and s[6] == ’3’:# проверяем, что число удовлетворяет маске
print(i, end=’ ’)
Решение через fnmatch
from fnmatch import fnmatch
# для оптимизации делаем цикл с шагом 111 с числа кратного 111, таким образом, мы будем проходиться только по кратным 111 числам
for x in range(9005208,10**7+1,111):
if fnmatch(str(x),’9??5*1*?3’): # проверяем, что число удовлетворяет маске
print(x)