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

Азамат решил попробовать новый КрабсБургер в Макдоналдсе. Но поскольку он был закрыт, пришлось довольствоваться заказом в бургерной неподалёку. Номер заказа в данном заведении состоит из 6  цифр, и называется счастливым, если сумма первых трех цифр заказа равна сумме вторых трех цифр. Номера заказов не могут начинаться с нуля и идут по возрастанию. Азамат заметил, что номера заказов других людей частично совпадают с его, и вывел маску номера заказа, в которой могут встречаться следующие символы:

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

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

Найдите количество таких номеров заказов, которые соответсвуют маске ?9  ?7  * и являются счастливыми.

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

ans = 0
for i in range(1, 10): #число не может начинаться с 0
    for j in range(10):
        for t in range(10):
            for k in range(10):
                s = str(i) + ’9’ + str(j) + ’7’ + str(t) + str(k) # составляем маску числа
                if int(s[0]) + int(s[1]) + int(s[2]) == int(s[3]) + int(s[4]) + int(s[5]): # проверка по условию
                    ans += 1
print(ans)

Решение через fnmatch

from fnmatch import fnmatch # импортимуем fnmatch

count = 0

for x in range(100000,999999+1): # делаем перебор 6-значных чисел
    n = str(x)
    if fnmatch(n,’?9?7*’): # проверяем, что число соответствует маске
        first = n[:3] # первые три цифры числа
        second = n[3:] # вторые три цифры числа
        sm_first = sum(map(int,first)) # сумма первых трёх цифр
        sm_second = sum(map(int,second)) # сумма последних трёх цифр
        if sm_first == sm_second:
            count += 1
print(count)

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