HJ100 题解 | #等差数列#
题意分析
- 给出一个等差数列的首项和公差,我们需要求解前n项的和。
思路分析
直接模拟
-
我们直接按照题目的意思进行模拟,从1-n循环,然后用一个变量更新每一项,累加到答案即可。
-
代码如下
- 从1-n进行枚举,时间复杂度为
- 过程中只使用了少数几个变量,空间复杂度为
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int now=2; // now记录当前项的数
int sum=0; // sum记录总的和
while(n--){
sum+=now;
now+=3;
}
cout<<sum<<endl;
}
return 0;
}
公式法
- 我们利用高中的知识可以推导到公式法进行求解,由于这个序列是一个等差序列,所以我们可以利用很好地推导前n项和的通项公式。
- 代码如下
- 直接利用公式法,时间复杂度为
- 只用了几个变量,空间复杂度为
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
// 直接利用公式法
int ans=n*2+3*(n-1)*n/2;
cout<<ans<<endl;
}
return 0;
}