题目的主要信息:
- 等差数列 2,5,8,11,14 。。。。
- 输出求等差数列前项和
方法一:累加求和
具体做法:
既然是数列求和,我们就将前项都遍历出来,然后依次累加。这是一个首项为2,公差为3的等差数列,每项为,其中从0开始。
#include<iostream>
using namespace std;
int main(){
int n;
while(cin >> n){
int x = 2; //数组第一个元素
int sum = 0;
for(int i = 0; i < n; i++) //遍历数组前n项
sum += x + 3 * i; //累加
cout << sum << endl;
}
return 0;
}
复杂度分析:
- 时间复杂度:,遍历数列前项
- 空间复杂度:,常数级空间使用
方法二:求和公式
具体做法:
等差数列还有求和公式,,其中,,我们可以根据公式直接计算和。
#include<iostream>
using namespace std;
int main(){
int n;
while(cin >> n){
int x = 2; //数组第一个元素
int sum = n * x + n * (n - 1) * 3 / 2; //等差数列求和公式
cout << sum << endl;
}
return 0;
}
复杂度分析:
- 时间复杂度:,直接计算,常数时间
- 空间复杂度:,常数级空间