题目

求 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