Имеется набор данных из целых чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить минимальное произведение среди пар элементов, которое будет кратно
.
В первой строке входных данных задаётся количество чисел
. В каждой из последующих
строк записано одно целое положительное число, не превышающее
.
Пример входных данных:
5
3
4
10
26
17
Выходные данные для приведённого выше примера:
В ответе укажите два числа: сначала значение искомого количества для файла , затем для файла
.
Решение 1 (неэффективное)
f = open("27A.txt")
n = int(f.readline())
a = [int(f.readline()) for x in range(n)]
ans = 10000000000
for i in range(n):
for j in range(i + 1, n):
if (a[i] * a[j]) % 15 == 0:
ans = min(ans, a[i] * a[j])
print(ans)
Решение 2 (эффективное)
n = int(input())
kr_15 = [100000000, 100000000]
kr_5, kr_3, nekr = 100000000, 100000000, 100000000
for i in range(n):
x = int(input())
if x % 15 == 0:
kr_15 += [x]
elif x % 5 == 0:
kr_5 = min(kr_5, x)
elif x % 3 == 0:
kr_3 = min(kr_3, x)
else:
nekr = min(nekr, x)
kr_15 = sorted(kr_15)[:2]
print(min(kr_15[0]*kr_15[1], kr_15[0]*kr_5,
kr_15[0]*kr_3, kr_15[0]*nekr,
kr_5*kr_3))