Задана послідовність дійсних чисел. Обчислимо їх модулі. Знайдіть максимальне значення серед цих модулей.
Вхідні дані
У першому рядку задано кількість елементів $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. Якщо значення модуля числа більше за змінну — надаємо змінній значення модуля числа. Таким чином після завершення вхідного потоку змінна буде дорівнювати найбільшому числу послідовності за модулем.
Дана целочисленная матрица [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].
Вводим элементы матрицы. Используя цикл вычисляем [latex]b_{i}[/latex]. После завершения вычислений, выводим элементы массива [latex]b[/latex] на экран.
Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).
Я показала , что период не [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] . Вот графики :
Переменной [latex]sum[/latex] присваиваем значение [latex]0[/latex]. Вводим элемент [latex]a[/latex], который мы будем суммировать в цикле до [latex]n[/latex]:
C++
11
12
cin>>a;
sum+=a;
Далее вводим в input соответствующие значения [latex]a[/latex] и получаем ответ.
Задача: Даны натуральное число [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
С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <math.h>
intmain(void){
intn;
scanf("%d",&n);
doublea,p=1,k;
for(inti=1;i<=n;i++)
{
scanf("%lf",&a);
p*=a;
}
k=sqrt(fabs(p));
printf("%lf",k);
return0;
}
Java:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
importjava.util.*;
importjava.lang.*;
importjava.io.*;
classIdeone
{
publicstaticvoidmain(String[]args)
{
Scanner in=newScanner(System.in);
intn=in.nextInt();
doublea,p=1,k;
for(inti=1;i<=n;i++){
a=in.nextDouble();
p*=a;
}
k=Math.sqrt(Math.abs(p));
System.out.println(k);
}
}
Объявляем переменную [latex]n[/latex] (количество элементов — это целое число, поэтому используем тип int) и переменные a (элементы произведения), p (произведение), k (корень из модуля произведения элементов), они могут быть вещественными, поэтому выбираем тип double.
В цикле for считываются элементы [latex]a_{1},a_{2},\cdot \cdot \cdot ,a_{n}[/latex], где[latex]i[/latex] — индекс элемента, и вычисляется их произведение.
После цикла вычисляется корень из модуля произведений элементов.
Для решения данной задачи создаем цикл, счетчик [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].
В этой задаче необходимо проанализировать значения температуры, дабы найти ближайшее к нулю.
Ввод:
Строка 1: [latex]N[/latex], количество значений температуры.
Строка 2: собственно говоря, сами значения температуры, выраженные целыми числами в диапазоне от -273 до 5526.
Вывод:
Вывести 0 в том случае, если не введено ни одного значения.
Если введено хотя бы одно, то вывести на экран значение ближайшее к 0. Отметить, что если есть 2 значения, одинаково близкие к нулю, но с разными знаками, то на экране должно отобразиться положительное число.
Для первого теста нужно было найти ближайшее к нулю значение, когда все числа по модулю были попарно различными. Для этого достаточно было завести переменную типа int и положить в неё значение, которое заведомо больше всех возможных (это 5527, так как по условию задачи значения температур не выходят за пределы [-273;5527]). И в цикле сделать проверку того, что же больше — модуль нашего текущего значения или модуль только что введённого.
Задача 1.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <math.h>
usingnamespacestd;
intmain(){
intN;
cin>>N;
intclosest=5527,TEMPS;
for(inti=0;i<N;i++){
cin>>TEMPS;
if(abs(closest)>abs(TEMPS)){
closest=TEMPS;
}
}
cout<<closest<<endl;
}
Для того, чтобы пройти второй тест необходимо было ввести такое условие, при котором отметалось бы отрицательное значение температуры при наличии такого же по модулю положительного. Для этого мы сравниваем модуль текущего значения температуры со значением введённым (уже не по модулю, так как нам нужно убрать отрицательные числа), и если они равны, то текущее ближайшее значение изменится на положительное, если до этого оно было с минусом.
И для последней задачи, конечно, достаточно было ввести условие, что [latex]N[/latex] не равно нулю. В противном случае программа выведет на экран 0. Конечный код указан первым.
Задача А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++):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <math.h>
intmain(){
doublea,b1,b0;// a - первый член последовательности, который мы должны запомнить. b0 и b1 - последующие члены соответственно.
Так как в моей формуле присутствует первый член последовательности, который, согласно условию, всегда больше 0, я вынесла его из общего ряда, поэтому его ввод с клавиатуры осуществляется вне цикла.
Затем мне нужно было найти n-ый член моей последовательности. Для этого я создала 2 переменных, в одной из которых хранится настоящее значение n-ого члена независимо от его знака. Если этот член — число не отрицательное, то вспомогательной переменной присваивается его значение и цикл повторяется вновь. Если же условие неравенства не выполняется, то цикл заканчивается, и у нас остаётся значение нашей вспомогательной переменной (не отрицательное).
В том случае, если первый член последовательности является в то же время и n-ым, [latex]a_{n}[/latex] и вспомогательной переменной присваивается значение [latex]a_{1}[/latex]. И в этом случае модуль разницы будет равен 0.
После программа выводит модуль [latex]\left|a_{1}-a_{n} \right|[/latex].
Ознакомиться с кодом можно здесь (C++) и здесь (Java).
Для отправки комментария необходимо войти на сайт.