天大夏令营机试第一题

题目

有如下的数列0,1,1,2,3,5,8……

第一行给你一个T,表示接下来要输入T行数字(0<T<10000)

剩下T行每行输入数字N(0<=N<=100000)(记忆不太清晰反正很大的数字)

要求输出数列中第N个数,记为RESULT

如果N数字太大,则输出result mod 1e9+7

示例输入

3

0

1

5

输出

0

1

5

这道题主要是超时问题,直接使用递归会报错,所以采用简单的枚举就可以。

#include <iostream>
#include <algorithm>
using namespace std; 
#define M 1000000007
int main() 
{
    
     long long int fob[100010];
     fob[0]=0;
     fob[1]=1;
    for(long long int i=2;i<100010;i++)
    {
        fob[i]=fob[i-1]%M+fob[i-2]%M;
    }
    int t;
    cin>>t;
    while(t--)
    {
        int num;
        cin>>num;
        cout<<fob[num]<<endl;
    }
    return 0;
}

哪位大佬来看的时候,给个简单方法也行~

猜你喜欢

转载自www.cnblogs.com/fantastic123/p/9293037.html
今日推荐