
СРОЧНО С++ Минимальное произведение Дана последовательность из N целых чисел (они могут быть
положительными, отрицательными или равными 0 ). Необходимо выбрать из этих чисел два числа так, чтобы их произведение было как можно меньшим (не рассматриваются квадраты данных чисел, но можно выбрать произведение двух различных элементов последовательности, равных друг другу). Формат входных данных В первой строке входных данных записано целое число N , (2⩽N⩽105)— количество данных чисел. Следующие N строк содержат сами числа, не превосходящие по модулю 40000 . Формат выходных данных Программа должна вывести единственное целое число — наименьшее возможное произведение двух различных элементов этой последовательности. Система оценки Тесты к этой задаче разбиты на четыре группы, приведённые в таблице. Но оценивается каждый тест в отдельности. Количество баллов Ограничение на N Ограничение на значение членов последовательности 20 2⩽N⩽100 Неотрицательные 20 2⩽N⩽100 Положительные, отрицательные или ноль 20 100 Неотрицательные 40 100 Положительные, отрицательные или ноль Ввод Вывод 3 1 -3 2 -6

Ответы на вопрос

Программа:
C++:
#include <iostream>
using namespace std;
int main() {
int N, i, num, min = 40001, max = -40001, minSecond = 40001, maxSecond = -40001, minimum;
cout << "N = "; cin >> N;
for (i = 0; i < N; i++) {
cin >> num;
if (num < min) {
minSecond = min;
min = num;
} else if (num < minSecond) {
minSecond = num;
}
if (num > max) {
maxSecond = max;
max = num;
} else if (num > maxSecond) {
maxSecond = num;
}
}
if (min * max < min * minSecond) minimum = min * max;
else minimum = min * minSecond;
if (max * maxSecond < minimum) minimum = max * maxSecond;
cout << minimum;
}
Объяснение:
В начале регистрируются переменные: N - кол-во чисел, которое будет введено; i - для цикла for; num - для чисел, которые будут вводится с клавиатуры; min и minSecond - два минимальных числа, которые будут введены; max и maxSecond - два максимальных числа, которые будут введены; minimum - минимальное произведение.
После "регистрации" переменных вводится число N. Далее с помощью цикла выполняется тело N раз. Вводится само число и далее анализируется по такой логике:
Можно получить положительное и отрицательное минимальное число по модулю. Например, если было введено отрицательное число, то его требуется перемножить с максимальным положительным, чтобы в результате получить минимальное число. Также по такой логике требуется рассматривать произведение минимального и второго по величине минимального числа, также произведение максимального и максимального на втором месте, потому что ввод может быть максимально неудобным (логически рассматриваются все допустимые варианты определения минимального произведения).
Итак, в самом цикле с помощью условного оператора if находим минимальное число и второе минимальное число (на втором месте), с максимальным такая же ситуация. После выполнения цикла находится минимальное произведение среди допустимых вариантов из выше приведённой логики. Минимальное произведение записывается в переменную minimum, чтобы было меньше операций для сравнивания. В самом конце - выводится это минимальное число.
Результат:
3
-5
1
0
-5
3
0
1
2
0



Для решения данной задачи необходимо выбрать два числа из последовательности таким образом, чтобы их произведение было минимальным. Последовательность состоит из N целых чисел, которые могут быть положительными, отрицательными или равными нулю.
Формат входных данных:
- В первой строке входных данных записано целое число N (2⩽N⩽105) — количество чисел в последовательности. - Следующие N строк содержат сами числа, не превосходящие по модулю 40000.Формат выходных данных:
- Программа должна вывести единственное целое число — наименьшее возможное произведение двух различных элементов этой последовательности.Для решения этой задачи можно использовать следующий алгоритм: 1. Инициализировать две переменные `min1` и `min2` со значениями `40000` и `40000` соответственно. 2. Проходить по каждому числу в последовательности. 3. Если текущее число меньше `min1`, обновить `min2` равным `min1` и `min1` равным текущему числу. 4. Если текущее число меньше `min2` и не равно `min1`, обновить `min2` равным текущему числу. 5. Вывести произведение `min1` и `min2`.
Например, для входных данных `3 1 -3 2 -6`: - Инициализируем `min1` и `min2` со значениями `40000` и `40000`. - Первое число `1` меньше `min1`, поэтому обновляем `min2` равным `min1` (т.е., `min2` становится `40000`) и `min1` равным `1`. - Второе число `-3` меньше `min1`, поэтому обновляем `min2` равным `min1` (т.е., `min2` становится `1`) и `min1` равным `-3`. - Третье число `2` меньше `min1`, поэтому обновляем `min2` равным `min1` (т.е., `min2` становится `-3`) и `min1` равным `2`. - Четвертое число `-6` меньше `min1`, поэтому обновляем `min2` равным `min1` (т.е., `min2` становится `2`) и `min1` равным `-6`. - Выводим произведение `min1` и `min2`, которое равно `-6`.
Таким образом, наименьшее возможное произведение двух различных элементов этой последовательности равно `-6`.
Ответ: -6.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili