top1编程
← 返回题目
题解

数列求和

1 条题解

  • 0
    @ 2026-8-5 1:11:26

    解题思路

    数列 2、5、8、11、14……是一个等差数列:从第 1 项开始,每一项都比前一项大 3。

    • 首项 a1 = 2
    • 公差(每项相差的值)d = 3

    等差数列前 n 项和公式是:

    S = n × (2×a1 + (n-1)×d) ÷ 2

    代入 a1=2、d=3,得到:

    S = n × (4 + 3×(n-1)) ÷ 2 = n × (3n + 1) ÷ 2

    n 可能比较大,乘出来的数可能超过 int 的范围,所以用 long long 来算。直接套公式,一步算出答案。

    参考代码

    // P4488 数列求和:2+5+8+11+...是公差为3的等差数列,求前n项和
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        // 首项 a1=2,公差 d=3,前n项和 = n*(2*a1+(n-1)*d)/2 = n*(3n+1)/2
        // 用 long long 防止数据过大时溢出
        long long sum = 1LL * n * (3LL * n + 1) / 2;
        cout << sum << endl;
        return 0;
    }
    

    复杂度分析

    只用一次公式计算,时间复杂度 O(1),空间也是 O(1)。

    • 1