1002: 【编程入门】编程求解1+2+3+...+n
题目描述
编程求解下列式子的值:S=1+2+3+...+n
输入
输入一行,只有一个整数n(1<=n<=1000)
输出
输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
样例输入 复制
100
样例输出 复制
5050
题目要求计算从1加到n的和,即S = 1 + 2 + 3 + ... + n。我们可以使用等差数列求和公式 或循环累加 的方法来解决。
方法1:等差数列求和公式(最优解)
等差数列求和公式为:
S= n*(n+1)/2
这个公式可以直接计算出结果,时间复杂度为O(1),是最优解。
代码实现
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
cout << n * (n + 1) / 2 << endl;
return 0;
}
方法2:循环累加
如果不知道求和公式,也可以用循环逐个累加1到n的值。这种方法的时间复杂度是O(n),但对于n≤1000来说完全足够。
代码实现
#include <iostream>
using namespace std;
int main() {
int n, sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
sum += i;
}
cout << sum << endl;
return 0;
}
代码解释
输入处理 :使用cin >> n读取输入的整数n。
计算求和 :
公式法 :直接套用等差数列求和公式,注意使用整数运算以避免浮点数问题。
循环法 :初始化sum=0,然后遍历1到n,逐个累加。
输出结果 :使用cout << sum << endl打印最终的和,endl确保换行。
样例测试
输入 :
100
输出 :
5050
验证:100×101/2=5050 结果正确。
总结
推荐使用等差数列求和公式 ,因为它计算速度快,适用于所有合法输入(1≤n≤1000)。如果n的范围更大(比如1e9),循环法会较慢,而公式法仍然高效。
![]()