Вопрос задан 17.12.2025 в 20:07. Предмет Информатика. Спрашивает Шукало Верка.

Дано целое число N (больше 0). Найти сумму 1 + 1/2 + 1/3 + ... + 1/N (вещественное число). Входные данные: ввести целое число N (1 <= N <= 20). Выходные данные: вывести сумму 1 + 1/2 + 1/3 + ... + 1/N с точностью до 4 цифр в дробной части. (в Паскале)

Перейти к ответам

Ответы на вопрос

Отвечает Фраёнов Миша.

Задача — посчитать гармоническую сумму
SN=1+12+13++1NS_N = 1 + \frac12 + \frac13 + \dots + \frac1N при целом N1N \ge 1.

Идея решения

Идём по целым ii от 1 до NN, накапливая сумму в переменной вещественного типа. Деление делаем как вещественное, чтобы не было целочисленного усечения.

Сложность: O(N)O(N) по времени и O(1)O(1) по памяти.
Точность: используйте double/float64. Для очень больших NN сумма растёт примерно как lnN+γ\ln N + \gamma (где γ0.57721\gamma \approx 0.57721), но для задачи достаточно прямого суммирования.

Псевдокод

bash
ввести N sum = 0.0 для i от 1 до N: sum = sum + 1.0 / i вывести sum

Пример

Для N = 5:
S = 1 + 0.5 + 0.333333... + 0.25 + 0.2 = 2.2833333333...

Реализация (Python)

python
N = int(input().strip()) s = 0.0 for i in range(1, N + 1): s += 1.0 / i print(s)

Реализация (C++)

cpp
#include #include using namespace std;

int main() { long long N; if (!(cin >> N) || N < 1) return 0; long double sum = 0.0L; for (long long i = 1; i <= N; ++i) { sum += 1.0L / i; } cout << fixed << setprecision(10) << sum << '\n'; return 0; }

Примечание: если нужно повысить численную стабильность при очень больших N, можно суммировать с конца (от N к 1) или использовать тип повышенной точности (long double).

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос