Problem Description
Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
Input
输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
Output
输出为N行,每行为对应的f(Pi)。
Sample Input
5 1 2 3 4 5
Sample Output
1 1 2 3 5
Source
Recommend
lcy
#include <stdio.h>
#include <string.h>
#define MAX 99999
char c [MAX];
void add (char a[],char b[],char back[])
{
int x,z,i,j,k;
z=0;
k=0;
i=strlen(a)-1;
j=strlen(b)-1;
while (i>=0||j>=0)
{
if(i>=0)
z+=a[i]-'0';
if(j>=0)
z+=b[j]-'0';
c[k++]=z%10+'0';
z/=10;
i--; j--;
}
if(z)
c[k++]='1';
c[k]='\0';
i=0;
for(k-=1; k>=0; k--)
back[i++]=c[k];
back[i]='\0';
}
int main ()
{
int n,i,t;
while (~scanf("%d",&n))
{
//char str1 [MAX],str2[MAX],f[MAX];
while(n--)
{
scanf("%d",&t);
char str1 [MAX]="1",str2[MAX]="1",f[MAX];
for(i=3; i<=t; i++)
{
add(str1,str2,f);
strcpy(str1,str2);
strcpy(str2,f);
}
printf("%s\n",str2);
}
}
return 0;
}