Tinamei
其实你不知道你不知道

Fibonacci数列,定义如下: 
f(1)=f(2)=1 
f(n)=f(n-1)+f(n-2) n>=3。 
计算第n项Fibonacci数值。 

输入

输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。

输出

输出为N行,每行为对应的f(Pi)。

样例输入

5 1 2 3 4 5

样例输出

1 1 2 3 5

提示

 

此题需要用大数处理

 
 

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;

#define maxn 1005

int fib [maxn][maxn] = {0};

void Add(int a[], int b[], int c[])
{
for(int i = 0; i < maxn; i++)
{
a[i] += b[i] + c[i];
a[i+1] += a[i]/10;
a[i] %= 10;
}
}

void PutNum(int a[])
{
int len;
for(int i = maxn-1; i >= 0; i--)
{
if(a[i])
{
len = i;
break;
}
}

for(int i = len; i >= 0; i--)
cout << a[i];

cout << endl;
}
int main()
{
fib[1][0] = fib[2][0] = 1;

for(int i = 3; i <= 1000; i++)
{
Add(fib[i], fib[i-1], fib[i-2]);
}
int T, n;

cin >> T;

while(T--)
{
cin >> n;

PutNum(fib[n]);
}

return 0;
}

posted on 2015-01-17 13:59  Tinamei  阅读(570)  评论(0编辑  收藏  举报