题解 | #等差数列#
等差数列
http://www.nowcoder.com/practice/f792cb014ed0474fb8f53389e7d9c07f
题意:
求首项为2,公差为3的等差数列前n项和
解法一(数学公式)
由等差数列前n项和公式:即可求解
对应到本题,答案即为:
代码:
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); int n; while(cin>>n){ cout<<n*2+n*(n-1)/2*3<<endl; } return 0; }时间复杂度:,显然,只需要的时间计算答案。
空间复杂度:,程序中没有开额外的数组,也没有递归调用,故空间复杂度为
解法二(循环计算)
我们使用循环来生成这个数列,然后计算总和即可。
代码:
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); int n; while(cin>>n){ int ans=0;//答案 int x=2;//当前数字 while(n--){ ans+=x; x+=3;//每次+3 } cout<<ans<<endl; } return 0; }时间复杂度:,我们需要枚举数列每个数字,故时间复杂度为
空间复杂度:,程序中没有开额外的数组,也没有递归调用,故空间复杂度为