Задача к ЕГЭ по информатике на тему «Маски» №3

Назовем маской числа последовательность цифр, в которой также могут встречаться следующие символы,

– символ «?»означает ровно одну произвольную цифру

– символ «*»означает любую последовательность цифр произвольной длины, в том числе и пустую последовательность

Среди натуральных чисел, не превышающих 107  найдите все числа, соответствующие маске 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)

Ответ: 9575193 9585183 9595173 9605163 9615153 9625143 9635133 9645123 9655113 9665103
Оцените статью
Я решу все!