Задача
Найдите сумму значений функции
$$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 |
import java.util.Scanner; import java.util.ArrayList; import java.math.BigDecimal; public class Main { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); BigDecimal ans = new BigDecimal(0); ArrayList<BigDecimal> a = new ArrayList<BigDecimal>(); for(int i=0; i<n; i++) { BigDecimal x = scanner.nextBigDecimal(); a.add(x); } for(int i=0; i<n; i++) { BigDecimal w = a.get(i); BigDecimal v = new BigDecimal(1); ans = ans.add(w.add(v.divide(w, 15, BigDecimal.ROUND_HALF_UP))); } System.out.println(ans); } } |
Решение задачи
Мы просто суммируем значения функции в каждой точке. Тут использовали класс BigDecimal для точек и значений функции для более высокой точности.