题目
有如下的数列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; }
哪位大佬来看的时候,给个简单方法也行~