В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения
Определите количество троек элементов последовательности, в которых не более двух из трёх элементов являются трёхзначными числами, а сумма элементов тройки не меньше минимального трёхзначного положительного элемента последовательности.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумеваются три идущих подряд элемента последовательности.
Ответ:
Приведём решение на языке Python.
s = [int(i) for i in open('17.txt')]
otv = []
mini_tri = min([i for i in s if i > 0 and len(str(i)) == 3])
for i in range (len(s)-2):
tri = [s[i], s[i+1], s[i+2]]
tri_elem = [x for x in tri if len(str(abs(x))) == 3]
if len(tri_elem) <= 2:
if sum(tri) >= mini_tri:
otv.append(sum(tri))
print(len(otv), max(otv))
В результате работы данного алгоритма при вводе данных из файла ответ — 2441 27284.
Ответ: 2441 27284.
Приведём решение Юрия Красильникова на языке Python.
def good(p,m):
t = [100 <= abs(x) < 1000 for x in p]
return sum(t) <= 2 and sum(p) >= m
a = [int(s) for s in open('17.txt')]
m = min([x for x in a if 100 <= x < 1000])
r = [sum(a[i-2:i+1]) for i in range(2,len(a)) if good(a[i-2:i+1],m)]
print(len(r),max(r))

