B3650 [语言月赛 202208] 求和

一、题目理解

1.1 题目要求

从输入中读取一个正整数 n,然后从 1 开始逐个累加到 n。每加一个数,就把当前的累加和输出一次,共输出 n 行。

输入格式:

  • 一行:一个正整数 n

输出格式:

  • 共 n 行,第 i 行表示从 1 累加到 i 的和

1.2 样例模拟

假设输入为 5。

意思是:从 1 开始,依次加到 5。

我们逐步计算并输出:

  • 第 1 步:sum = 0 + 1 = 1,输出 1

  • 第 2 步:sum = 1 + 2 = 3,输出 3

  • 第 3 步:sum = 3 + 3 = 6,输出 6

  • 第 4 步:sum = 6 + 4 = 10,输出 10

  • 第 5 步:sum = 10 + 5 = 15,输出 15

因此输出为五行:第一行 1,第二行 3,第三行 6,第四行 10,第五行 15。

 

二、核心思想:累加器法

2.1 什么是累加器法?

想象有一个存钱罐,一开始是空的(值为 0)。

  • 第 1 天存入 1 元,存钱罐里现在有 1 元,报告一次余额。

  • 第 2 天再存入 2 元,存钱罐里现在有 3 元,报告一次余额。

  • 第 3 天再存入 3 元,存钱罐里现在有 6 元,报告一次余额。

  • 以此类推,直到第 n 天存入 n 元,报告最后一次余额。

每次存入后都报告一次,这就是“累加求和并逐步输出”。

2.2 为什么这种方法可行?

因为题目要求的是“边加边输出”,而不是“全部加完再输出”。所以每完成一次加法,就要立刻输出当前的和。用一个变量 sum 持续累加,每次加完就输出,逻辑非常直接。

2.3 为什么用 long long 而不是 int?

因为 n 可能很大时,累加和会超出 int 的表示范围(int 最大约 21 亿)。例如当 n 达到 10 万时,累加和约为 50 亿,已经超过 int 上限。用 long long 可以表示约 9×10¹⁸ 的整数,足够安全。

 

三、程序执行流程逐步解析

下面按照程序实际执行的顺序,逐步讲解每一步在做什么。所有代码片段在文末统一给出,这里只讲逻辑。

【第 1 步】程序开始

程序从主函数开始执行。首先需要准备变量:

  • 一个用来存放输入上限的变量,记为 n,类型为 long long。

  • 一个用来存放累加和的变量,记为 sum,类型为 long long,初始化为 0。

同时,为了让程序能进行输入输出操作,需要使用标准输入输出流。

【第 2 步】读入 n

从输入流中读取一个整数,存入 n。这个 n 表示要累加到的最大数字。

以假设的样例为例,此时 n = 5。

【第 3 步】初始化累加和

将 sum 初始化为 0。

为什么必须初始化为 0?

因为 sum 是用来“累加”的。如果初始值不是 0(比如是随机值),那么第一次加法就会出错。C++ 中局部变量不会自动初始化为 0,所以必须手动写等于 0。

【第 4 步】循环累加并逐步输出

这是整个程序的核心部分。使用一个循环,循环变量 i 从 1 开始,每次加 1,直到 i 大于 n 时停止。因此循环体会执行 n 次。

(1)累加

每次循环,把当前的循环变量 i 加到 sum 上。即 sum 更新为 sum + i。

  • 第 1 次循环:sum = 0 + 1 = 1

  • 第 2 次循环:sum = 1 + 2 = 3

  • 第 3 次循环:sum = 3 + 3 = 6

  • 第 4 次循环:sum = 6 + 4 = 10

  • 第 5 次循环:sum = 10 + 5 = 15

(2)输出

每次累加完后,立刻输出当前的 sum,并换行。

注意: 输出语句写在循环体内,所以每加一次就输出一次,共输出 n 行。如果写在循环体外,就只会输出最后一行。

(3)循环结束后

循环结束后,程序已经输出了 n 行结果。

 

#include<bits/stdc++.h>              // 万能头文件
using namespace std;
int main(){
    //0.定义 n
    long long n, sum = 0;             // n:累加上限  sum:累加和,必须初始化为 0
    //1.输入 n
    cin >> n;                         // 读入累加上限
    //2.遍历1 到 n 的数字存放到循环变量i
    for(int i = 1; i <= n; i++){      // 循环 n 次,i 从 1 到 n
        //3.sum + i
        sum = sum + i;                // 把当前 i 累加到 sum 上
        cout << sum << "\n";          // 立刻输出当前累加和并换行
    }
    return 0;
}

 

posted @ 2026-09-17 15:23  乐意丘  阅读(7)  评论(0)    收藏  举报