1、MT1220斐波那契数列III
输入一个正整数N(N< 50),输出斐波那契数列前N项。
格式
输入格式:
输入整型
输出格式:
输出整型,空格分隔。
样例 1
输入:
5
输出:
1 1 2 3 5
解决思路
和前一个题类似,按照相同方法计算斐波拉契数列的值,然后直接输出即可。
实现代码
#include<bits/stdc++.h>
using namespace std;
void f(int n){
int f1 = 1;
int f2 = 1;
int fn;
for(int i=1;i<=n;i++){
cout << f1 << " ";
fn = f1 + f2;
f1 = f2;
f2 = fn;
}
}
int main( )
{
int n;
cin >> n;
f(n);
return 0;
}
2、MT1222 等差数列
求等差数列前N项的级数之和。不考虑不合理的输入等特殊情况。
格式
输入格式:
输入N,首项M,差值K,整型,空格分隔。
输出格式:
输出整型
样例 1
输入:
5 1 3
输出:
35
相关知识点
等差数列
是指从第二项起,每一项与它的前一项的差等于同一个常数的一种数列,常用A、P表示。这个常数叫做等差数列的公差,公差常用字母d表示。
例如:
1,3,5,7,9……2n-1。
通项公式为:an=a1+(n-1)*d。首项a1=1,公差d=2。
前n项和公式为:Sn=a1*n+[n*(n-1)*d]/2或Sn=[n*(a1+an)]/2。
注意:以上n均属于正整数。
解决思路
法一:可以直接使用等差数列的通项公式和前n项数列的和公式。
法二:使用等差数列的定义。
实现代码
法一:公式法
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,m,k,sum,an;
cin >> n >> m >> k;
an = m + (n-1) * k;
sum = n*(m+an)/2;
cout << sum;
return 0;
}
法二:定义法
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,m,k,an;
cin >> n >> m >> k;
int sum = m;
for(int i=1;i<n;i++){
m += k;
sum += m;
}
cout << sum;
return 0;
}
3、MT1223 N是什么
给定一系列数字3、10、21、36…,输入正整数N,输出上述序列的第N个值。从N=1开始计数。
格式
输入格式:
输入正整数N
输出格式:
输出整型
样例 1
输入:
5
输出:
55
备注
N小于10000
分析过程
这种题目一般是要求找规律,只要找出规律,这道题目就不难了。
所以分析给的3、10、21、36、55。(数学基础不好,看不出来,呜呜呜呜,这种题该怎么解决啊)
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n;
cin >>n;
cout<<n*(2*n+1);
return 0;
}
明天继续吧。