按题意用 for 循环逐项累加 1 到 n,避免直接套等差数列公式。
OJ: luogu
题目 ID: P5722
难度:入门
标签:入门循环模拟python
日期: 2026-07-15 18:26
题意
输入正整数 n,求:
题目明确要求不要直接使用等差数列求和公式,所以这里练习循环累加。
思路
用变量 answer 保存当前已经累加出来的和。
从 1 到 n 依次枚举每个数 x,每次执行:
text
answer = answer + x循环结束后,answer 就是 1 到 n 的总和。
这题本身就是循环语法练习,brute.py 会和正解完全相同,因此不创建额外暴力文件。
Python 知识
/home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:用int(input())读取一个整数。range(1, n + 1)会生成1, 2, ..., n,右端点n + 1不会被取到。answer += x是answer = answer + x的简写,适合表达累加。print(answer, end="")输出最终答案。
代码
python
n = int(input())
answer = 0
for x in range(1, n + 1):
answer += x
print(answer)cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-07-27 00:00
* update_at: 2026-07-27 00:00
*/
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
// 从 1 到 n 逐个累加(题目要求练习循环,不使用等差数列公式)
for (int i = 1; i <= n; i++) {
sum += i;
}
cout << sum << endl;
return 0;
}Pythonic 写法
等差公式:
python
n = int(input())
print(n * (n + 1) // 2)复杂度
循环执行 n 次,时间复杂度是
总结
这题要训练的是“从左到右逐项累加”的基本循环模式。以后遇到前缀和、计数、统计类问题,也会反复用到这个写法。