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