Задача
Найдите сумму значений функции
$$f \left(x \right ) = x + \frac{1}{x}$$
в нескольких целых точках.
Входные данные
В первой строке задано количество точек $n$ $\left (1 \leqslant n \leqslant 50 \right ).$ В следующей строке заданы $n$ целых чисел $x_1, x_2, …, x_n$ — точки, значения функции в которых нужно просуммировать $\left (0 \leqslant \left |x_i \right | \leqslant 10^9 \right ).$
Выходные данные
Выведите одно число — сумму значений функции $f \left(x \right )$ в заданных точках. Ответ считается правильным, если абсолютная или относительная погрешность не превышает $10^{-9}.$
Тесты
Входные данные | Выходные данные |
$3$ | $7.833333333333333$ |
$1 \ 2 \ 3$ | |
$2$ | $0$ |
$1 \ -1$ | |
$5$ | $4.265140415140415$ |
$10 \ -13 \ 21 \ -18 \ 4$ | |
$1$ | $10.1$ |
$10$ |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> #include <vector> using namespace std; int main() { vector <long double> x; int n; long double ans=0; cin >> n; x.resize(n); for(int i=0; i<n; i++) { cin >> x[i]; } for(int i=0; i<n; i++) { ans+=x[i]+1.0/x[i]; } cout.precision(15); cout << fixed << ans; return 0; } |
Решение задачи
Мы просто суммируем значения функции в каждой точке. Тут использовали тип long double для точек и значений функции для меньшей погрешности.
Ссылки
Условие задачи на e-olymp
Код решения
Я что-то явно перепутал с номером задачи. Эта задача на потоковые вычисления и сложность в моем списке 66%. Но раз Вы нашли способ добавить сюда вектор, то пусть остается. Хотя без них проще: