(П. Финкель) Текстовый файл состоит не более чем из \(10^6\) символов и содержит буквы английского алфавита и цифры. Определите максимальное число в этом файле, ограниченное двумя парами символов \(ZZ\) и удовлетворяющее маске «\(8???54???22\)», где символ \(?\) обозначает любую цифру. Пример такого числа: \(81235412322.\) Найдите произведение нечётных цифр найденного числа.
Решение:
Python
from fnmatch import fnmatch
s = open('5645.txt').readline().strip()
s = s.replace('ZZ', ' ')
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, '8???54???22')]
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 odd:
p *= d
print(p)
Ответ: \(76545\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене