Дана последовательность натуральных чисел. Необходимо выбрать из последовательности три числа так, чтобы их сумма делилась
В ответе запишите найденную сумму.
Входные данные.
Первая строка входного файла содержит целое
Вам даны два входных файла
Ответ:
Приведем решение на языке Python для файла A.
f = open('27-A2.txt')
n = int(f.readline())
a = [int(s) for s in f]
summi = []
for i in range(n):
for j in range(i+1, n):
for k in range(j+1,n):
summa = a[i] + a[j] + a[k]
if summa % 105 == 0:
summi.append(summa)
print(max(summi))
Приведем решение на языке Python для файлов А и B.
f = open('27.txt')
n = int(f.readline())
a = [int(s) for s in f]
ost105 = [[-100000,-100000,-100000] for i in range(105)]
for i in a:
if i > min(ost105[i%105]):
ost105[i%105].append(i)
ost105[i%105].sort(reverse=True)
if len(ost105[i%105])>3:
del ost105[i%105][-1]
summa = -10**10
for x1 in range(105):
for x2 in range(105):
for x3 in range(105):
if (x1+x2+x3)%105 ==0:
if x1==x2==x3:
summa=max(sum(ost105[x1]),summa)
elif x1==x2:
summa=max(ost105[x3][0]+ost105[x1][0]+ost105[x1][1],summa)
elif x1==x3:
summa=max(ost105[x2][0]+ost105[x1][0]+ost105[x1][1],summa)
elif x2==x3:
summa=max(ost105[x1][0]+ost105[x2][0]+ost105[x2][1],summa)
else:
summa=max(ost105[x1][0]+ost105[x2][0]+ost105[x3][0],summa)
print(summa)
Ответ: 118755&299998125.
Приведем решение Юрия Красильникова на языке Python.
group=[[] for i in range(105)]
f=open('27-B.txt')
f.readline()
for s in f:
x=int(s)
rem=x%105
group[rem].append(x)
group[rem].sort(reverse=True)
if len(group[rem])>3:del group[rem][3]
r=0
for i in range(105):
for j in range(105):
k=(210-i-j)%105
lst=[i,j,k]
ndx=list(set(lst))
cnt=[lst.count(x) for x in ndx]
if all([len(group[t])>=cnt[t] for t in range(len(ndx))]):
m=[sum(group[ndx[t]][:cnt[t]]) for t in range(len(ndx))]
r=max(r,sum(m))
print(r)

