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

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

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

– символ «&» означает пару произвольных цифр вида «четная+нечетная»;

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

Например, маске 123&4?5 соответствуют числа 12341405 и 12327405.

Среди натуральных чисел, не превышающих   9 10  , найдите все числа, соответствующие маске 2*11&0?, делящиеся на 6170 без остатка.

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

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

Ответ: 208114100 33730 256116700 41510 266112100 43130
Оцените статью
Я решу все!