老样子,先读题
题目描述:
有这样的一列数 1,3,5,7,9,……。 请计算前 N 个数的和
输入:
一个整数N
输出:
一个整数,表示前N个数的和。
样例组:
样例1:输入 Copy
3样例1:输出 Copy
9要求:
时间限制:1.0Sec 内存限制:128MB
这道题目有两种解法
一、暴力循环
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;//输入
int s=0;
for(int i=1;i<=n*2;i++)//这里之所以是n*2,是因为这些数都是奇数,n要乘2才能满足要求
{
if(i%2==1) s+=i;//数列里的都是奇数,加个判断
}
cout<<s;//输出
return 0;
}
当然也可以稍微优化一下
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;//输入
int s=0;
for(int i=1;i<=n*2;i+=2)//这里之所以是n*2,是因为这些数都是奇数,n要乘2才能满足要求
{
s+=i;//由于n一次加2,起始数是1,所以省去判断
}
cout<<s;//输出
return 0;
}
二、等差数列
不知阁下可否知道“等差数列”?
“等差数列”指一个数列中,每相邻的两个数的差都相同的数列就叫做等差数列
想求出等差数列的和也很简单,可以用下面这个公式:
(首项+末项)*项数 /2
所以知道这个,这一题就简单多了
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int moxiang=1+(n-1)*2;//由于每一项都比前一项多2,所以我们可以求出末项是多少
cout<<(1+moxiang)*n/2;
return 0;
}
这一题就讲到这里,拜拜!
(如果有更好的方法,可以在下方评论)