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