Ну раз никто не решился, а может не захотел возиться, покажу я вам динозавра! У меня когда-то была программа на QBASIC. (Первая личный комп вначале был без жёсткого диска. Под DOS грузили с дискеты. И там этот мелкий интерпретатор (ок 190 кБайт) был неплохим подспорьем.) Программа сохранилась. Она изначально только график рисовала. Потом я её дополнял. В том числе и решением уравнений вилкой. Было несколько версий Функцию я по-быстрому заменил на требуемую в задаче. Перелопачивать и выяснять полностью состояние программы не стал. За требуемую точность не поручусь. Но 4-6 знаков после запятой выдам. Это был "Полуавтоматический" вариант с прорисовкой графика. Красной линией прочерчивалась прямая y=0. График можно было перерисовывать, задавая новые пределы изменения переменной х. Глядя на график можно было определить исходные отрезки для запуска метода вилки. На скринах, естественно, проблемы с кириллицей. (Ненастроенный DosBox) Но текст программы загнал в pdf. Там можно прочесть все надписи.
На 3-м снимке видно, что, потребовав точность , я получил ответ, отличающийся от ответа МАСТЕРА. Я так думаю, что у меня не все переменные, требуемые для расчёта объявлены с двойной точностью. (Изначально таких там вообще не было). Но 7 знаков после запятой в ответе совпадают. :) А может это ограничение демоверсии QBASIC интерпретатора.
int n = in.nextInt(); int[] a = new int[n]; a[0] = in.nextInt(); int min = a[0]; int minS = min; for (int i = 1; i < n; i++) { a[i] = in.nextInt(); if (a[i] < min) min = a[i]; } for (int i = 1; i < n; i++) { if (a[i] < minS && a[i] != min) minS = a[i]; } System.out.println(min + " " + minS); На всякий случай объясню еще так. Изначально двум минимумам мы присваиваем значение первого элемента. В первом цикле ты ищешь первый минимум, тут всё понятно: со второго элемента массива, если элемент меньше минимума, то минимуму присваиваем значение элемента. Во втором цикле мы ищем второй минимум: всё то же самое, только добавляется ещё одно условие: элемент должен быть не равен первому минимуму. Вот, впринципе, и всё
У меня когда-то была программа на QBASIC. (Первая личный комп вначале был без жёсткого диска. Под DOS грузили с дискеты. И там этот мелкий интерпретатор (ок 190 кБайт) был неплохим подспорьем.)
Программа сохранилась. Она изначально только график рисовала. Потом я её дополнял. В том числе и решением уравнений вилкой. Было несколько версий Функцию я по-быстрому заменил на требуемую в задаче. Перелопачивать и выяснять полностью состояние программы не стал.
За требуемую точность не поручусь. Но 4-6 знаков после запятой выдам. Это был "Полуавтоматический" вариант с прорисовкой графика. Красной линией прочерчивалась прямая y=0. График можно было перерисовывать, задавая новые пределы изменения переменной х. Глядя на график можно было определить исходные отрезки для запуска метода вилки.
На скринах, естественно, проблемы с кириллицей. (Ненастроенный DosBox) Но текст программы загнал в pdf. Там можно прочесть все надписи.
На 3-м снимке видно, что, потребовав точность , я получил ответ, отличающийся от ответа МАСТЕРА. Я так думаю, что у меня не все переменные, требуемые для расчёта объявлены с двойной точностью. (Изначально таких там вообще не было). Но 7 знаков после запятой в ответе совпадают. :) А может это ограничение демоверсии QBASIC интерпретатора.
int[] a = new int[n];
a[0] = in.nextInt();
int min = a[0];
int minS = min;
for (int i = 1; i < n; i++) {
a[i] = in.nextInt();
if (a[i] < min) min = a[i];
}
for (int i = 1; i < n; i++) {
if (a[i] < minS && a[i] != min) minS = a[i];
}
System.out.println(min + " " + minS);
На всякий случай объясню еще так.
Изначально двум минимумам мы присваиваем значение первого элемента.
В первом цикле ты ищешь первый минимум, тут всё понятно: со второго элемента массива, если элемент меньше минимума, то минимуму присваиваем значение элемента.
Во втором цикле мы ищем второй минимум: всё то же самое, только добавляется ещё одно условие: элемент должен быть не равен первому минимуму.
Вот, впринципе, и всё