练习题(七)
时间限制: 1 Sec 内存限制: 128 MB
[命题人:171360140]
题目描述
李华在高中的时候数学非常好,高中的时候对等差数列和等比数列非常着迷,在入大学后又碰到了斐波那契数列,同时他也学了C语言,他想用程序来求斐波那契数列的第n项,其中第一项和第二项都为1,且an=a(n-1)+a(n-2)(n>=3)
输入
第一行一个整数T代表有T组数据(0<T<100)
接下来的N行每行有一个整数N,代表第N项(0<N<90)
输出
每组数据占一行
样例输入
5
1
2
3
4
5
样例输出
1
1
2
3
5
来源/分类
寒假练习赛
题目网址: http://47.112.31.182/problem.php?id=1071
题意:
斐波那契数列an=a(n-1)+a(n-2)(n>=3)通过这个公式来算第n项的值
思路:
因为有多组数据且N<90,所以可以先把求出前90组,然后直接输出第n项就可以了
代码:
#include <iostream>
#include <vector>
using namespace std;
vector<long long> v;
int main()
{
//尾部添加元素v.push_back()
v.push_back(0); //v[0]
v.push_back(1); //v[1]
v.push_back(1); //v[2]
for(int i=3;i<=90;i++) //先求出前90项
v.push_back(v[i-1]+v[i-2]);
int n,x;
cin>>n; //n组数据
while(n--)
{
cin>>x;
cout<<v[x]<<endl; //输出第x项
}
return 0;
}
运行结果:
总结:
对于多组数据要明白打表思想