Problem2218--记忆化递归-斐波那契

2218: 记忆化递归-斐波那契

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 338  Solved: 131
[Status] [Submit] [Creator:]

Description

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

斐波那契数列是有规律的,我们用 fi 来表示斐波那契数列的第 i 项,则 f1 = f2 = 1;当 i > 2 时,fi = fi-2 + fi-1

现在有 q 次询问,每次询问给你一个整数 n,你需要输出 fn 除以 1000 的余数。

Input

输入的第一行包含一个整数 q(1 ≤ q ≤ 200,000)。

接下来 q 行,每行包含一个整数 n,表示一次询问(1 ≤ n ≤ 200,000)。

Output

输出共 q 行,对于每次询问的 n,输出一个整数,表示 fn 除以 1000 的余数。

Sample Input Copy

5
2
5
7
12
25

Sample Output Copy

1
5
13
144
25

HINT

输入输出数据达到10万以上,需要使用scanf和printf
scanf("%d%d",&a,&b);                        相当于是cin>>a>>b;
printf("%d+%d=%d\n",a,b,a+b);        相当于是cout<<a<<"+"<<b<<"="<<a+b<<endl;


scanf 输入
printf 输出
& 取地址符 (输入的时候需要用)
%d 表示输入或者输出一个整数  int
%c 表示输入或者输出一个字符  char
%f  表示输入或者输出一个小数 float
%s  表示输入或者输出一个字符串 char[]
\n表示换行


【样例解释】
· f2 = 1
· f5 = 5
· f7 = 13
· f12 = 144
· f25 = 75025,其除以 1000 的余数为 25。

Source/Category

 提高A