题解
求n个整数的和
1 条题解
-
0
解题思路
这道题要我们:先读入一个整数 n,再读入 n 个整数,把这 n 个整数全部加起来,输出它们的和。
这是最经典的"累加"问题。我们用一个变量 sum(和)来记录总和,先把 sum 清成 0,就像准备一个空篮子。然后循环 n 次,每读入一个数,就把它"放进篮子"——也就是加到 sum 上。循环结束后,sum 里装的就是所有数的总和,把它输出即可。
为什么 sum 要先清零?因为篮子在开始装东西之前必须是空的。如果不清零,sum 里会是一个不确定的"垃圾值",最后算出来的和就不对了。
注意数据范围:最多 100 个数,每个数最大 1000,所以总和最大是 100×1000=100000,用 int 类型完全装得下,不用担心溢出。
参考代码
#include <iostream> using namespace std; int main() { int n; // n:一共要读入几个数 cin >> n; // 读入个数 n int sum = 0; // sum:累加用的和,先清成 0(空篮子) for (int i = 1; i <= n; i++) { // 循环 n 次,读入 n 个数 int x; // x:当前读入的一个整数 cin >> x; // 读入这个数 sum = sum + x; // 把它累加到 sum 上(放进篮子) } cout << sum << endl; // 输出 n 个数的总和 return 0; }复杂度分析
程序只做了一次循环,循环 n 次,每次做常数次操作(读入、加法),所以时间复杂度是 O(n)。这里 n 表示题目中输入整数的个数:n 越大,循环次数越多,运行时间就越长,这正是 O(n) 的含义。用到的变量只有 n、sum、i、x 这几个,个数固定,和 n 的大小无关,所以空间复杂度是 O(1)。
- 1