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