1760:菲波那契数列(2)
查看
提交
统计
提问
总时间限制:
1000ms
内存限制:
65536kB
描述
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。
给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。
输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 <= a <= 1000000)。
输出
n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数对1000取模得到的结果。
样例输入
4
5
2
19
1
样例输出
5
1
181
1
AC代码:
#include<cstdio>
int s[1000005],a[1000005];
int fun(int x)
{
if(x<3) return 1;
else if(s[x]) return s[x];
else {
s[x]=(fun(x-1)+fun(x-2))%1000;
return s[x];
}
}
/*int fun3(int x)
{
if(x==1) return 1;
else if(x==2) return 2;
else return fun3(x-1)+fun3(x-2);
}*/
/*int fun(int x)
{
return x>2? (fun(x-1)+fun(x-2))%1000:1;
}*/
int main()
{
int n;
s[1]=1;
s[2]=2;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
printf("%d\n",fun(a[i]));
}
“`