Задача к ЕГЭ по информатике на тему «Маски» №2

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

— символ «?» означает ровно одну произвольную цифру;

— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.

Среди натуральных чисел, не превышающих 106  , найдите все числа, соответствующие маске 9  ?123  ? и делящиеся на 7  без остатка. В ответе запишите количество найденных чисел.

Решение через циклы

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)

Ответ: 14
Оцените статью
Я решу все!