Условие
Дана последовательность действительных чисел [latex]a_{1},a_{2},…,a_{n}[/latex]. Требуется домножить все члены последовательности на квадрат её наименьшего члена, если [latex]<a_{1} \geq 0[/latex], в противном случае — на квадрат наибольшего.
Решение
Для решения воспользуемся классом Array для инициализации массива. Далее заполним его числами со входного потока. Далее, в зависимости от первого (нулевого) элемента массива, воспользуемся функцией getMin() или getMax() . Далее умножим каждый элемент на (соответственно) минимум/максимум и выведем последовательность.
Тесты
№ | Входные данные | Выходные данные |
1 | -2 2 43 5 -10 12 0 -1 | -3698 3698 79507 9245 -18490 22188 0 -1849 |
2 | 0 100 99 0 -1 1 | 0 100 99 0 -1 1 |
3 | 42 1 1 1 0 -1 24 -24 -42 | 74088 1764 1764 1764 0 -1764 42336 -42336 -74088 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
class Test { static function getMin(a:Array<Int>) { var min:Int = a[0]; for (v in a) { if (v < min) min = v; } return min; } static function getMax(a:Array<Int>) { var max:Int = a[0]; for (v in a){ if (v > max) max = v; } return max; } static function main() { var a:Array<Int> = new Array<Int>(); while(true) { var b:Int = Std.parseInt(Sys.stdin().readLine()); a.push(b); } var factor = a[0] >= 0 ? getMin(a) : getMax(a); for (i in 0...a.length) { a[i] *= factor*factor; } trace (a); } } |