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

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

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

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

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

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

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

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

Ответ: 121563945 125973 123243045 127713 124053645 128553 127353945 131973
Оцените статью
Я решу все!