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

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

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

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

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

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

ans = 0
# пустая звёздочка
if 2738 % 7 == 0: # составляем число, удовлетворяющее маске
    ans += 1
#односимвольная звёздочка
for w in range(10):
    s1 = ’2738’ + str(w) # составляем число, удовлетворяющее маске
    if int(s1) % 7 == 0:
        ans += 1
#двухсимвольная звёздочка
for w in range(10):
    for z in range(10):
        s2 = ’2738’ + str(w) + str(z) # составляем число, удовлетворяющее маске
        if int(s2) % 7 == 0:
            ans += 1
print(ans)

Решение через срезы

count = 0
for x in range(2744,10**6+1,7): # для оптимизации делаем цикл с шагом 7 с числа кратного 7, таким образом, мы будем проходиться только по кратным 7 числам
    n = str(x)
    if ’2738’ in n[:4]: # проверка, что число удовлетворяет маске
        count += 1
print(count)

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