#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int a[1005][300]; //用二维数组的行来记录每项数据,行标表示第几项数据
int main()
{
memset(a,0,sizeof(0));
int i,n,k,bj;
a[1][0]=1,a[2][0]=2,a[3][0]=3;
for(i=4; i<=1000; i++)
{
for(k=0; k<300; k++)
{
a[i][k]+=a[i-1][k]+a[i-2][k]; //用来求前两项的和,如果数组中每个小单元里面的数大于9,则进位
if(a[i][k]>9)
a[i][k+1]+=a[i][k]/10;//这里是进位
a[i][k]%=10;
}
}
while(~scanf("%d",&n)) //输入到文件结束
{
for(bj=299; bj>=0; bj--) //用来去除前导0 标记从右往左第一个不是0的位置
if(a[n][bj])
break;
for(i=bj; i>=0; i--) //打印输出
printf("%d",a[n][i]);
puts("");
}
return 0;
}
//这里只求到了第1000项,如果求更大的项,要把行和列扩大,行长度至少保证大于第N项数据的长度