Задание 17
В файле содержится последовательность натуральных чисел, каждое из которых не превышает 100 000. Определите количество троек элементов последовательности, в которых ровно два из трёх элементов являются трёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13. Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 13. В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Теория
Для решения этой задачи необходимо уметь считать данные из файла, преобразовать считанные строки в числа, найти минимальное или максимальное значение в файле. Так как операция чтения из файла ресурсоемкая, то рекомендуется считывать содержимое файла в массив (список) и потом проанализировать. В ЕГЭ ограничений на память сейчас к программе не предъявляется.
Решение
Программа (Python)
f = open('demo_2024_17.txt')
n=[]
max13 = 0
#считываем построчно строки в список n и ищем
#max13 - максимальное число, оканчивающееся на 13
for line in f:
number = int(line)
if (number % 100 == 13) and (number > max13):
max13 = number
n.append(number)
print('max13 =',max13)
counter = 0
maxsum = 0
#с начала и до предпредпоследнего числа берем
#три подряд идущих чисел
for k in range(0,len(n)-2):
n1 = n[k]
n2 = n[k+1]
n3 = n[k+2]
#ровно 2 числа из тройки >=100 и <1000
#проверяем через длину строки - короче
#чем >=100 and <=999 для чисел
if (len(str(n1))==3 and len(str(n2))==3 and len(str(n3))!=3) or \
(len(str(n1))==3 and len(str(n3))==3 and len(str(n2))!=3) or \
(len(str(n2))==3 and len(str(n3))==3 and len(str(n1))!=3):
sum = n1+n2+n3
if sum <= max13:
counter += 1
if sum > maxsum:
maxsum = sum
print(counter, maxsum)
Результат 959 и 97471
Ответ
959 и 97471 (Время не более 10 минут)