e-olymp 914. Модуль максимального

Задача взята с сайта e-olymp

Задача

Задана послідовність дійсних чисел. Обчислимо їх модулі. Знайдіть максимальне значення серед цих модулей.

Вхідні дані

У першому рядку задано кількість елементів $n\left(n  \leqslant 100  \right)$ у послідовності. У наступному рядку задано $n$ дійсних чисел — елементи послідовності, значення яких не первищують за модулем 100.

Вихідні дані

Виведіть максимальне значення серед цих модулей з 2 десятковими знаками.

Тести

# ВХОДНЫЕ ДАННЫЕ ВЫХОДНЫЕ ДАННЫЕ
1 0 -1 1 1.00
2 3
-1.1 1.2 -1.3
1.30
3 5
5.16 0 -7.18 3 4.99
7.18
4 4
-75.111 7.5 -5.1 75.110
75.11
5 10
-1 -2 -3 -4 -5 -6 -7 -8 -9 1
9.00

Решение

Задача сходиться до пошуку максимального елемента послідовності. Зрозуміло, що найменше можливе значення модуля числа — 0. Тому, считуючи дані зі вхідного потоку будемо порівнювати їх зі змінною, що  дорівнює 0. Якщо значення модуля числа більше за змінну — надаємо змінній значення модуля числа. Таким чином після завершення вхідного потоку змінна буде дорівнювати найбільшому числу послідовності за модулем.

  • Зараховане рішення на e-olymp
  • Код задачі на ideone

А410г

Задача.

Дана целочисленная матрица [latex]\left[a_{ij} \right] {i,j=1, \ldots,n}[/latex]. Получить [latex]b_{1}, \ldots,b_{n}[/latex], где  [latex]b_{i}[/latex] — это  [latex]\sum_{j=1}^{n}{\left|a_{ji} \right|}[/latex].

Тесты.

n [latex]\left[a_{ij} \right][/latex] [latex]b_{1}, \ldots,b_{n}[/latex] Комментарий
2 [latex]\begin{pmatrix}1& 4\\-5 & 7\end{pmatrix}[/latex] 6 11 Пройден
3 [latex]\begin{pmatrix}1 & 2 & -3\\-4 & 5 & 6\\7 & -8 & 9\end{pmatrix}[/latex] 12 15 18 Пройден

Решение.

C++

Java

Вводим элементы матрицы. Используя цикл вычисляем  [latex]b_{i}[/latex]. После завершения вычислений, выводим элементы массива [latex]b[/latex] на экран.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

А136м

Задача.

Даны натуральное число [latex]n[/latex], действительные числа   [latex]a_{1},…,a_{n}[/latex] .

Вычислить: [latex]\sin \left|a_{1}+…+a_{n} \right|[/latex]

Тест

[latex]n[/latex] последовательность результат (wolframalpha)
1 0 0
1 1000 0.82688
1  -100 0.505366
3 -100 1000 -100 0.89397
5 1 2 3 4 5 0.650287

Я показала , что период не [latex]\pi [/latex] , а [latex]2\pi [/latex] . Период  [latex]\pi [/latex]  был бы в случае [latex]\left|\sin a_{1}+…+a_{n} \right|[/latex] , а у нас  [latex]\sin \left|a_{1}+…+a_{n} \right|[/latex] . Вот графики :

6WSmLvYnzY4

zATL68loKls

 

Ссылка на программу: http://ideone.com/ICxfXU

Решение:

Переменной [latex]sum[/latex] присваиваем значение [latex]0[/latex]. Вводим элемент [latex]a[/latex], который мы будем суммировать в цикле до [latex]n[/latex]:

Далее вводим в input соответствующие значения [latex]a[/latex] и получаем ответ.

 

А137в

Задача.

Даны натуральное число [latex]n[/latex], действительные числа [latex]a_{1}…a_{n}[/latex]. Вычислить: [latex]\left|a_{1} \right|, \left|a_{1}+a_{2} \right|, … , \left|a_{1}+…+a_{n} \right|[/latex].

Тесты.

n [latex]a_{1}…a_{n}[/latex] [latex]\left|a_{1} \right|, \left|a_{1}+a_{2} \right|, … , \left|a_{1}+…+a_{n} \right|[/latex] Комментарий
5 -5  6  11  -10 5  1  12  2 Пройден
4 -4.2  5.6  0  -3.2 4.2  1.4  1.4  1.8 Пройден

Код.

C++

Java

Вводим числа, каждое число прибавляем к общей сумме и выводим модуль данной суммы.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

А136л

Задача: Даны натуральное число [latex]n[/latex], действительные числа [latex]a_{1},\cdot \cdot \cdot ,a_{n}[/latex]. Вычислить: [latex]\sqrt{\left|a_{1}a_{2}\cdot \cdot \cdot a_{n} \right|}[/latex].

[latex]n[/latex] [latex]a_{1}[/latex] [latex]a_{2}[/latex] [latex]a_{3}[/latex] [latex]a_{4}[/latex] [latex]a_{5}[/latex] [latex]a_{6}[/latex] [latex]a_{7}[/latex] [latex]a_{8}[/latex] [latex]k[/latex]
4 -5 2 4 -3.6 12
8 -5 0.2 -3.2 0.5 -1.25 20 2 80 80
3 4 4 0 0
5 3 8 6 2.8 1.3 22.894541

С++:

Java:

Объявляем переменную [latex]n[/latex] (количество элементов — это целое число, поэтому используем тип int) и переменные a (элементы произведения), p (произведение), k (корень из модуля произведения элементов), они могут быть вещественными, поэтому выбираем тип double.

В цикле for считываются элементы [latex]a_{1},a_{2},\cdot \cdot \cdot ,a_{n}[/latex], где [latex]i[/latex] — индекс элемента, и вычисляется их произведение.

После цикла вычисляется корень из модуля произведений элементов.

Задача на Ideone:
C++
Java

А116д

Задача:

Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Найти:

[latex]\prod_{k=1}^{n}(\frac{k}{k+1}-cos^k|x|)[/latex]

Тесты:

[latex]x[/latex] [latex]n[/latex] [latex]p[/latex] Комментарий
1 4 0.0212016 Пройден
-4 3 -0.0779913 Пройден
50 16 0.0782772 Пройден

Код:

Для решения данной задачи создаем цикл, счетчик [latex]k[/latex] которого не превышает заданного [latex]n[/latex].  В самом цикле вычисляем произведение [latex]p[/latex] путем домножения новых  множителей заданных формулой  [latex]\frac{k}{k+1}-cos^k|x|[/latex]  пока [latex]k[/latex] не превысит [latex]n[/latex]. Выводим произведение [latex]p [/latex].

Ссылка Ideone

Код Java

Ссылка на Ideone

Puzzle — Temperatures

Задача взята с этого сайтаБезымянный

В этой задаче необходимо проанализировать значения температуры, дабы найти ближайшее к нулю.

Ввод:

Строка 1: [latex]N[/latex], количество значений температуры.

Строка 2: собственно говоря, сами значения температуры, выраженные целыми числами в диапазоне от -273 до 5526.

Вывод:

Вывести 0 в том случае, если не введено ни одного значения.

Если введено хотя бы одно, то вывести на экран значение ближайшее к 0. Отметить, что если есть 2 значения, одинаково близкие к нулю, но с разными знаками, то на экране должно отобразиться положительное число.

[latex]N[/latex] Ввод Вывод Комментарий.
Простой тест 5 1 -2 -8 4 5 1 Пройден.
Сложный тест 10 -5 -4 -2 12 -40 4 2 18 11 5 2 Пройден.
Без температур 0 0 Пройден.
Дополнительный тест 14 7 -10 13 8 4 -7 -12 -3 3 -9 6 -1 -6 7 -1 Пройден.

Код программы (C++):

Для первого теста нужно было найти ближайшее к нулю значение, когда все числа по модулю были попарно различными. Для этого достаточно было завести переменную типа int и положить в неё значение, которое заведомо больше всех возможных (это 5527, так как по условию задачи значения температур не выходят за пределы [-273;5527]). И в цикле сделать проверку того, что же больше — модуль нашего текущего значения или модуль только что введённого.

[su_spoiler title=»Задача 1.» icon=»arrow-circle-2″]

[/su_spoiler]

Для того, чтобы пройти второй тест необходимо было ввести такое условие, при котором отметалось бы отрицательное значение температуры при наличии такого же по модулю положительного. Для этого мы сравниваем модуль текущего значения температуры со значением введённым (уже не по модулю, так как нам нужно убрать отрицательные числа), и если они равны, то текущее ближайшее значение изменится на положительное, если до этого оно было с минусом.

[su_spoiler title=»Задача 2.» icon=»arrow-circle-2″]

[/su_spoiler]

Java:

И для последней задачи, конечно, достаточно было ввести условие, что [latex]N[/latex] не равно нулю. В противном случае программа выведет на экран 0. Конечный код указан первым.

 

А165к

Задача А165к. Даны действительные числа [latex]a_{1}, a_{2}, \ldots[/latex]. Известно, что [latex]a_{1} < 0[/latex] и что среди [latex]a_{2}, a_{3}, \ldots[/latex] есть хотя бы одно отрицательное число. Пусть
[latex]a_{1}, \ldots, a_{n}[/latex] – члены данной последовательности, предшествующие
первому отрицательному члену ( [latex]n[/latex] заранее неизвестно).  Получить: [latex]\left|a_{1}-a_{n} \right|[/latex].

Введённые данные. [latex]\left|a_{1}-a_{n} \right|[/latex] Комментарий.
1 2 6 4 -8 0 6 8 -7 3 Пройден.
0,65 3,2 4 0 -3 2 0,65 Пройден.
0 -5 8 9 0 Пройден.
0,8 3 6 9 7,2 0 4 -2 3,2 Пройден.
1 -3 6 0 Пройден.

Код программы (C++):

Java:

 

Так как в моей формуле присутствует первый член последовательности, который, согласно условию, всегда больше 0, я вынесла его из общего ряда, поэтому его ввод с клавиатуры осуществляется вне цикла.

Затем мне нужно было найти n-ый член моей последовательности. Для этого я создала 2 переменных, в одной из которых хранится настоящее значение n-ого члена независимо от его знака. Если этот член  — число не отрицательное, то вспомогательной переменной присваивается его значение и цикл повторяется вновь. Если же условие неравенства не выполняется, то цикл заканчивается, и у нас остаётся значение нашей вспомогательной переменной (не отрицательное).

В том случае, если первый член последовательности является в то же время и n-ым, [latex]a_{n}[/latex] и вспомогательной переменной присваивается значение [latex]a_{1}[/latex]. И в этом случае модуль разницы будет равен 0.

После программа выводит модуль [latex]\left|a_{1}-a_{n} \right|[/latex].

Ознакомиться с кодом можно здесь (C++) и здесь (Java).