Дана последовательность натуральных чисел. Необходимо выбрать из
Условие
Дана последовательность натуральных чисел. Необходимо выбрать из последовательности три числа так, чтобы их сумма делилась на 105 и при этом была максимально возможной.В ответе запишите найденную сумму.
Входные данные.
Файл AФайл BПервая строка входного файла содержит целое число N — общее количество чисел в наборе. Каждая из следующих N строк содержит одно натуральное число, не превышающее 10⁸.Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала требуемую сумму для файла A, затем — для файла B. Ответ:
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Приведем решение на языке 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**10for 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)
Осталось ещё 1 шаг
Приведем решение Юрия Красильникова на языке…
Бесплатно · займёт минуту