大菲波数
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
Sample Input
5 1 2 3 4 5
1 1 2 3 5
题目分析:此题就是用大数的方法写出所有的Fibonacci数
AC代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fib[1010][1010];
void fibonacci() //打表法将前0—1000的Fibonacci数都列出来(用大数加法)
{
int i,j,a;
fib[0][0]=0;
fib[1][0]=1;
fib[2][0]=1;
for(i=3;i<=1000;i++)
{
for(j=0;j<1000;j++)
{
a=fib[i][j]+fib[i-1][j]+fib[i-2][j];
fib[i][j]=a%10;
fib[i][j+1]=fib[i][j+1]+a/10;
}
}
}
int main()
{
fibonacci();
int n,m,i;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
if(m==1||m==2)
printf("1\n");
else
{
for(i=999;i>=0&&fib[m][i]==0;i--) ; //消除前面多余的0
for(;i>=0;i--)
printf("%d",fib[m][i]);
printf("\n");
}
}
return 0;
}