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

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

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

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

Например, маске 123*4?5 соответствуют числа 123405 и 12312405.

Среди натуральных чисел, не превышающих 109  , найдите все числа, соответствующие маске ?*309, делящиеся на 10089 без остатка.

В ответ запишите пары чисел (найденное число и результат деления его на 10089) в порядке возрастания через пробел.

# для оптимизации делаем цикл с шагом 10089, начиная с числа кратного 10089, для того чтобы проходиться по числам кратным 10089
for x in range(10089, 10**9+1, 10089):
    s = str(x)
    t = [i for i in s[1:-3] if int(i) % 2 == 0] # чётные цифры числа от второго до 3 с правого края
    if (s[-3:] == ’309’) and (int(s[0]) % 2 == 0) and (not t): # проверка, что число соответствует маске и нет чётных цифр среди звёздочки
        print(x, x // 10089)

Ответ: 473991309 46981 655593309 64981 675771309 66981 837195309 82981 857373309 84981 877551309 86981
Оцените статью
Я решу все!