На вход программы поступает последовательность из натуральных чисел. Рассматриваются все пары различных элементов последовательности, у которых одинаковые остатки от деления на
и хотя бы одно из чисел делится на
. Необходимо найти и вывести максимальную сумму элементов пары среди таких пар. В ответ запишите
числа через пробел: ответ для файла А и ответ для файла В.
Решение 1 (неэффективное)
f = open("27A.txt")
n = int(f.readline())
a = [int(f.readline()) for x in range(n)]
ans = 0
for i in range(n):
for j in range(i + 1, n):
if a[i] % 29 == a[j] % 29:
if (a[i] % 17 == 0) or (a[j] % 17 == 0):
ans = max(ans, a[i] + a[j])
print(ans)
Решение 2 (эффективное)
file = open(’file_B.txt’)
n = int(file.readline())
ans = -1
maxim_krat_17 = [-1] * 29
maxim_nekrat_17 = [-1] * 29
for i in range(n):
x = int(file.readline())
ost = x % 29
if x % 17 == 0:
ans = max(ans, maxim_nekrat_17[ost] + x, maxim_krat_17[ost] + x)
maxim_krat_17[ost] = max(maxim_krat_17[ost], x)
else:
ans = max(ans, maxim_krat_17[ost] + x)
maxim_nekrat_17[ost] = max(maxim_nekrat_17[ost], x)
print(ans)