Текстовый файл состоит не более чем из \(10^6\) символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую наименьшее ненулевое количество пар соседних букв, которые стоят в таком же порядке и в алфавите (например, AB, BC, CD и т.д.). Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке чаще всего. Если таких букв несколько, надо взять ту, которая стоит позже в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле.
Пример. Исходный файл:
ZZQABA ZALMAC KRAKUT
В этом примере в первой и второй строках по одной подходящей паре (AB и LM), в третьей таких пар нет. Берём первую строку, т.к. она находится в файле раньше. В этой строке чаще других встречаются буквы Z и A (по два раза), выбираем букву Z, т. к. она позже стоит в алфавите. В ответе для этого примера надо записать Z3, так как во всех строках файла буква Z встречается 3 раза.
Решение:
Python
m = float('inf')
stmp = ''
for line in open('3781.txt'):
t = sum(ord(y) - ord(x) == 1 for x, y in zip(line, line[1:]))
if 0 < t < m:
m = t
stmp = line.strip()
ch = {}
for c in stmp:
ch[c] = ch.get(c, 0) + 1
m = max(ch.values())
ch = sorted([c for c in ch if ch[c] == m])
ans = 0
for line in open('3781.txt'):
ans += line.count(ch[-1])
print(f'{ch[-1]}{ans}')
Ответ: \(W38473\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене