Файл содержит последовательность натуральных чисел, не превышающих 100 000. Назовём тройкой три идущих подряд элемента последовательности.
Определите количество троек, для которых выполняются следующие условия:
— в тройке есть четырёхзначные числа, но не все числа в тройке четырёхзначные;
— в тройке больше чисел,
— сумма элементов тройки больше максимального элемента последовательности, запись которого заканчивается
В ответе запишите два числа: сначала количество найденных троек, затем максимальную величину суммы элементов этих троек.
Ответ:
Приведём решение на языке Python.
a = [int(s) for s in open('17.txt')]
a832 = max([x for x in a if x % 1000 == 832])
count = 0
s3 = []
for i in range (len(a) - 2):
troika = [a[i] , a[i+1] , a[i+2]]
a3 = [x for x in troika if x % 3 == 0]
a5 = [x for x in troika if x % 5 == 0]
raz4 = [x for x in troika if len(str(x)) == 4]
if sum(troika) > a832:
if len(a3) < len (a5):
if 0 < len(raz4) < 3:
s3.append(sum(troika))
print(len(s3),max(s3))
В результате работы данного алгоритма при вводе данных из файла ответ — 59 198654.
Ответ: 59 198654.
Приведём решение Бориса Савельева на языке Python.
f = open('17.txt')
a = [int(x) for x in f]
m = 0
for i in range (0,len(a)):
if a[i]%1000 == 832:
m = max(m,a[i])
cnt = 0
maxi = 0
for i in range (0,len(a)-2):
k5=0
k3=0
for j in range (i,i+3):
if a[j] % 5 == 0:
k5 += 1
if a[j] % 3 == 0:
k3+=1
if not (len(str(a[i]))==4 and len(str(a[i+1]))==4 and len(str(a[i+2]))==4):
if (len(str(a[i]))==4 or len(str(a[i+1]))==4 or len(str(a[i+2]))==4) and (k5 > k3) and ((a[i]+a[i+1]+a[i+2]) > m):
cnt += 1
maxi = max(maxi,a[i]+a[i+1]+a[i+2])
print(cnt,maxi)

