Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске *
соответствуют числа
и
.
Среди натуральных чисел, не превышающих , найдите все числа, соответствующие маске
, делящиеся на число
без остатка.
В ответе запишите все найденные числа в порядке возрастания и соответствующее им частное от деления на .
Решение через циклы
for i in range(123450708,123460000):
if (i%21==0) and (i%10==8) and ((i//100)%10==7): # проверяем, что число удовлетворяет маске
print(i, i//21)
Решение через срезы
# для оптимизации делаем цикл с шагом 21, начиная с числа кратного 21, для того чтобы проходиться по числам кратным 21
for x in range(123450726,10**9+1,21):
n = str(x)
if ’12345’ in n[:5] and n[-3] == ’7’ and n[-1] == ’8’: # проверяем, что число удовлетворяет маске
print(x,x//21)