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