【GESP】C++一级练习 luogu-B3650, 求和
GESP一级知识点循环练习,题目本身逻辑不复杂。但需要注意数据类型以及换行输出超时问题,一次做对也不容易。
luogu-B3650
题目要求
题目描述
输入一个整数 $n(1\le n \le 10^7)$,每行输出一个数,表示数字 $1$ 到 $i$ 的和。
比如,当 $n=5$ 时,
第 1 行输出一个数字 1;
第 2 行输出数字 3,因为
1 + 2 = 3
;第 3 行输出数字 6,因为
1 + 2 + 3 = 6
;第 4 行输出数字 10,因为
1 + 2 + 3 + 4 = 10
;第 5 行输出数字 15,因为
1 + 2 + 3 + 4 + 5 = 15
。
输入格式
输入一个数 $n(1\le n \le 10^7)$。
输出格式
输出共 $n(1\le n \le 10^7)$ 行,每行一个整数。
第 $i$ 行输出的数,表示数字 1 到 i 的和。
样例输入 #1
1
2
样例输出 #1
1
2
1
3
样例输入 #2
1
5
样例输出 #2
1
2
3
4
5
1
3
6
10
15
提示
对于 $40\%$ 的数据,$1\le n \le 10$。
对于 $60\%$ 的数据,$1\le n \le 10^4$。
对于 $80\%$ 的数据,$1\le n \le 10^6$。
对于 $100\%$ 的数据,$1\le n \le 10^7$。
题目分析
- 这是一道简单的累加问题。我们需要遍历从1到n的整数序列,并累加每个数。
- 使用一个循环来遍历从1到n的整数序列,并在每次循环中累加当前数到总和中。
- 最后,输出每个数的累加和。
提示:
使用 ` cout « endl; ` 输出换行会导致 TLE(超过时间限制)。
请使用 cout << "\n";
或者是 printf("\n");
输出换行。
$1+2+3+\dots+10000000$ 的值超出了 int
类型可以存储的最大值。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
long long n; // 定义一个长整型变量n,用于存储输入的整数
cin >> n; // 从输入流中读取n的值
long long ans = 0; // 定义一个长整型变量ans,用于存储累加的和
for (int i = 1; i <= n; i++) { // 循环从1到n
ans += i; // 将当前数i加到ans上
printf("%lld\n", ans); // 输出当前的累加和
}
return 0; // 返回0,表示程序执行成功
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权