8546. Найдите сумму

 

По заданному натуральному числу n вычислите сумму

S =

 

Вход. Одно натуральное число n (n ≤ 1000).

 

Выход. Выведите сумму с 6 десятичными знаками.

 

Пример входа 1

Пример выхода 1

5

0.833333

 

 

Пример входа 2

Пример выхода 2

12

0.923077

 

 

РЕШЕНИЕ

циклы

 

Анализ алгоритма

Вычислим указанную сумму при помощи цикла.

Вычислим указанную сумму математически:

 =  =

Теперь для нахождения ответа можно воспользоваться формулой.

 

Реализация алгоритма

Читаем входное значение n.

 

scanf("%d",&n);

 

В переменной i перебираем числа 1, 2, 3, …, n. На каждой итерации к результирующей сумме s прибавляем значение 1 / (i * (i + 1)).

 

s = 0; i = 1;

while (i <= n)

{

  s += 1.0 / i / (i+1);

  i++;

}

 

Выводим искомую сумму.

 

printf("%lf\n",s);

 

Реализация алгоритма – цикл for

Читаем входное значение n.

 

scanf("%d",&n);

 

Искомую сумму вычисляем в переменной s.

 

s = 0;

 

При помощи цикла вычисляем значение суммы, состоящей из n слагаемых. i-ое слагаемое равно 1 / (i * (i + 1)).

 

for (i = 1; i <= n; i++)

  s += 1.0 / (i * (i+1));

 

Выводим искомую сумму.

 

printf("%.6lf\n",s);

 

Реализация алгоритма – формула

Читаем входное значение n.

 

scanf("%d", &n);

 

Вычисляем ответ по формуле и выводим его.

 

s = 1 - 1.0 / (n + 1);

printf("%.6lf\n", s);

 

Java реализация

 

import java.util.*;

 

class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

 

    double s = 0;

    for(int i = 1; i <= n; i++)

      s += 1.0 / (i * (i+1));

 

    System.out.printf("%6f\n", s);

    con.close();

  }

}

 

Python реализация

Читаем входное значение n.

 

n = int(input())

 

Искомую сумму вычисляем в переменной s.

 

s = 0;

 

При помощи цикла вычисляем значение суммы, состоящей из n слагаемых. i-ое слагаемое равно 1 / (i * (i + 1)).

 

for i in range(1, n+1):

  s += 1.0 / (i * (i + 1));

 

Выводим искомую сумму.

 

print(s)