Файл содержит последовательность натуральных чисел, не превышающих 100 000. Назовём тройкой три идущих подряд элемента последовательности.
Определите количество троек, для которых выполняются следующие условия:
— остаток от деления на 3 ровно одного числа из тройки равен остатку от деления на 3 максимального элемента всей последовательности;
— остаток от деления на 7 хотя бы двух чисел из тройки равен остатку от деления на 7 минимального элемента всей последовательности.
В ответе запишите два числа: сначала количество найденных троек, затем максимальную величину суммы элементов этих троек.
Ответ:
Приведём решение на языке Python.
a = [int(s) for s in open('17.txt')]
amax3 = max(a) % 3
amin7 = min(a) % 7
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 == amax3]
a7 = [x for x in troika if x % 7 == amin7]
if len(a3) == 1 and len(a7) >= 2:
s3.append(sum(troika))
print(len(s3),max(s3))
Ответ: 278 268089.
Приведём решение Михаила Глинского на языке Python.
s = open('17.txt').readlines()
m=[int(x) for x in s]
r=[]
maxi=max(m)%3
mini=min(m)%7
for i in range(len(m)-2):
k3=0
if m[i]%3==maxi:
k3+=1
if m[i+1]%3==maxi:
k3+=1
if m[i+2]%3==maxi:
k3+=1
if k3==1:
k7=0
if m[i]%7==mini:
k7+=1
if m[i+1]%7==mini:
k7+=1
if m[i+2]%7==mini:
k7+=1
if k7 >= 2:r.append(m[i]+m[i+1]+m[i+2])
print(len(r),max(r))

