题解:洛谷 P5722 数列求和

【题目来源】

洛谷:P5722 【深基4.例11】数列求和 - 洛谷

【题目描述】

计算 \(1+2+3+\times+(n-1)+n\) 的值,其中正整数 \(n\) 不大于 \(100\)。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。

【输入】

输入一个正整数 \(n\)

【输出】

输出一个正整数,表示最后求和的答案。

【输入样例】

100

【输出样例】

5050

【核心思想】

  1. 问题分析:给定正整数 \(n \le 100\),计算 \(1+2+3+\cdots+n\) 的值。题目明确要求不能使用等差数列求和公式,必须用循环逐项累加。

  2. 算法选择

    • 循环累加:从 \(1\)\(n\) 遍历,将每个数加到累加器 sum
  3. 关键步骤

    • 读入数据cin >> n
    • 初始化sum = 0
    • 循环累加\(i\)\(1\)\(n\)):
      • sum += i:将当前数加入总和
    • 输出结果sum
  4. 时间/空间复杂度

    • 时间复杂度:\(O(n)\),需要遍历 \(n\) 个数
    • 空间复杂度:\(O(1)\),仅需常数个变量
  5. 循环累加的核心思想

    • 逐项累积:通过循环将每个数逐一加入累加器,模拟手工加法过程
    • 初始化重要性sum 必须初始化为 \(0\),否则初始值不确定导致错误
    • 范围覆盖:循环从 \(1\)\(n\)(含),确保所有数都被加入
    • 适用于基础累加、循环结构、求和模拟类入门问题

【算法标签】

入门 #模拟

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    int n;               // 定义变量:求和上限n
    int sum = 0;         // 定义变量:累加和,初始化为0

    cin >> n;            // 输入求和上限n

    // 循环累加1到n的所有整数
    for (int i = 1; i <= n; i++)
    {
        sum += i;        // 将当前数i加到总和sum中
    }

    cout << sum;         // 输出最终累加结果

    return 0;            // 程序正常结束
}

【运行结果】

100
5050
posted @ 2026-08-05 15:48  团爸讲算法  阅读(24)  评论(0)    收藏  举报