#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 5005
char fib[M][1100];
void strRev(char[]);
int longAdd(char[],char[],char[]);
int main()
{
register int n,i;
//freopen("in.txt","r",stdin);
strcpy(fib[0],"0");
strcpy(fib[1],"1");
strcpy(fib[2],"1");
for(i=3;i<M;i++)
longAdd(fib[i],fib[i-2],fib[i-1]);
while(scanf("%d",&n)==1)
printf("%s\n",fib[n]);
exit(0);
}
int longAdd(char f[],char f1[],char f2[])
{
int i,a,b,c=0;
for(i=0;f1[i]||f2[i];i++)
{
a=(f1[i])?f1[i]-48:0;
b=(f2[i])?f2[i]-48:0;
f[i]=(a+b+c)%10+48;
c=(a+b+c)/10;
}
if(c)f[i]=c+48;
strRev(f1);
return 0;
}
void strRev(char str[])
{
int i,len=strlen(str),n=len/2;
for(i=0;i<n;i++)
{
str[i]=str[i]^str[len-i-1];
str[len-i-1]=str[i]^str[len-i-1];
str[i]=str[i]^str[len-i-1];
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.