Problem Description
通过题(一),小鑫已经知道斐波那契数列是个什么东西喽~~。于是他要给自己提高难度。
在数学上,斐波纳契数列定义为:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
你能帮小鑫算出第n个斐波那契数是多少么?
Input
输入数据为多组,到文件结束。
每组数据为一行一个数n。n<1000000;
Output
对于每组输入,输出一行,为答案。因为数据范围较大,输出答案要对1000000007取模。
Example Input
1 2 3
Example Output
1 1 2
#include<stdio.h>
long long dp[1000000 + 10];#define MOD 1000000007
long long int f(int n)
{
long long int l;
if(n==0)dp[n]=0;
else if(n==1)dp[n]=1;
if (dp[n] != -1) return dp[n];
dp[n]=(f(n-1)+f(n-2))%MOD;
return dp[n];
}
int main()
{
memset(dp, -1, sizeof(dp));
long long h,a;
while(scanf("%lld",&a)!=EOF)
{
h=f(a);
printf("%lld\n",h);
}
return 0;
}