题目
求 1 到 n 的累加和
思路
本题求 1+2+…+n 的累加和。
读入 n,令 sum=0。循环让 i 从 1 到 n,每轮执行 sum += i(把当前 i 加进总和)。n 较大时用 long long;可对照公式 n*(n+1)/2。
解题分析
累加 1~n 有两种常见思路:循环逐项加,或用高斯公式一次算出来。n 很大时,公式在 O(1) 时间内完成,还要注意用 long long 存结果。
完整程序
#include <stdio.h>
int main(void)
{
int n;
long long sum = 0;
if (scanf("%d", &n) != 1 || n < 1) {
return 1;
}
for (int i = 1; i <= n; i++) {
sum += i;
}
printf("%lld\n", sum);
return 0;
}
运行示例
输入:
5输出:
15其它写法
下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。
高斯求和公式
程序:
#include <stdio.h>
int main(void)
{
int n;
if (scanf("%d", &n) != 1 || n < 1) {
return 1;
}
long long sum = (long long)(n / 2) * (n + 1);
if (n % 2) {
sum = (long long)n * ((n + 1) / 2);
}
printf("%lld\n", sum);
return 0;
}运行示例
输入:
5输出:
15