(П. Финкель) Текстовый файл состоит не более чем из \(10^6\) символов и содержит буквы английского алфавита и цифры. Определите максимальное число в этом файле, ограниченное двумя парами символов \(XX\) и удовлетворяющее маске «\(3????78??45\)», где символ \(?\) обозначает любую цифру. Пример такого числа: \(31234781245.\) Найдите сумму нечётных цифр и произведение чётных цифр найденного числа, запишите в качестве ответа сумму этих двух чисел.
Решение:
Python
from fnmatch import fnmatch
s = open('5643.txt').readline().strip()
s = s.replace('XX', ' ')
nums = [d for d in s.split(' ') if len(d) == 11 and all(c in '0123456789' for c in d)]
nums = [d for d in nums if fnmatch(d, '3????78??45')]
nums.sort(reverse=True)
odd = [int(x) for x in nums[0] if int(x) % 2 == 1]
even = [int(x) for x in nums[0] if int(x) % 2 == 0]
p = 1
for d in even:
p *= d
print(p + sum(odd))
Ответ: \(6174\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене