Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
– символ «?» означает ровно одну четную цифру;
– символ «*» означает любую последовательность нечетных цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12312405.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске ?*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