Дана последовательность из N целых чисел (они могут быть положительными, отрицательными или равными 0). Необходимо выбрать из этих чисел два числа так, чтобы их произведение было как можно меньшим (не рассматриваются квадраты данных чисел, но можно выбрать произведение двух различных элементов последовательности, равных друг другу). В первой строке входных данных записано целое число N, 2 ≤ N ≤105 – количество данных чисел. Следующие N строк содержат сами числа, не превосходящие по модулю 40 000. Программа должна вывести единственное целое число – наименьшее возможное произведение двух различных элементов этой последовательности.
N = int(input()) numbers = [] for _ in range(N): numbers.append(int(input())) numbers.sort() if numbers[0] >= 0 or numbers[-1] <= 0: print(numbers[0] * numbers[1]) else: print(min(numbers[0] * numbers[1], numbers[-1] * numbers[-2]))
Программа сначала считывает количество чисел N, затем считывает сами числа и добавляет их в список numbers. Затем список numbers сортируется. Далее программа проверяет, что все числа положительные или все числа отрицательные, и выводит произведение двух минимальных по модулю чисел. В противном случае программа выводит минимальное произведение из произведения двух самых маленьких чисел и произведения двух самых больших чисел.
Пример решения на Python:
N = int(input())numbers = []
for _ in range(N):
numbers.append(int(input()))
numbers.sort()
if numbers[0] >= 0 or numbers[-1] <= 0:
print(numbers[0] * numbers[1])
else:
print(min(numbers[0] * numbers[1], numbers[-1] * numbers[-2]))
Программа сначала считывает количество чисел N, затем считывает сами числа и добавляет их в список numbers. Затем список numbers сортируется. Далее программа проверяет, что все числа положительные или все числа отрицательные, и выводит произведение двух минимальных по модулю чисел. В противном случае программа выводит минимальное произведение из произведения двух самых маленьких чисел и произведения двух самых больших чисел.