练习题(七)

练习题(七)

时间限制: 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;
}
 

运行结果:
在这里插入图片描述
总结:
对于多组数据要明白打表思想

猜你喜欢

转载自blog.csdn.net/qq_41657977/article/details/86701583