题解
数列求和
1 条题解
-
0
解题思路
数列 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) ÷ 2n 可能比较大,乘出来的数可能超过 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