Постановка задачи
Вычислить: [latex]\sum \limits_{i=1}^{m}\sum \limits_{j=1}^{n}\frac{1}{i+j^2}[/latex], где [latex]m[/latex] и [latex]n[/latex] — вводимые числа.
Входные данные:
[latex]m[/latex] и [latex]n[/latex] — верхние границы сумм.Выходные данные:
Результат вычисления выражения.
Тесты
№ | Входные данные | Выходные данные |
1 | 1 5 | 0.8972 |
2 | 19 3 | 5.3469 |
3 | 164 395 | 34.7509 |
4 | 0 102 | 0 |
Результаты тестов на wolframalpha.com:
Решение
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.*; class Task3 { public static void main (String[] args) { int m, n; double S = 0; Scanner in = new Scanner(System.in); m = in.nextInt(); n = in.nextInt(); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { S += 1.0/(i + j*j); } } System.out.println(S); } } |
Описание решения
Так как необходимо найти вложенную сумму, будем использовать вложенный цикл (цикл внутри цикла). На каждом шаге внутреннего цикла прибавляем к сумме (которая изначально равна 0) результат выражения [latex]1/(i + j^2)[/latex]. В числителе вместо 1 пишем 1.0, что преобразует результат выражения в тип double, так как результат выражения — число вещественное.
Посмотреть, как работает программа со входными данными 164 395 можно на сайте ideone.
Очень хорошо. Но в третьей категории (циклы) у Вас уже есть засчитанная задача.
Есть. Но в категории «Циклические вычисления» есть подкатегория «Вложенные циклы», потому я решил, что нужно выполнить отдельно задачу и для нее.