/*思路:
只是重复大数加法的运算 */
#include<stdio.h>
#include<string.h>
int s[1100][1100];
int main()
{
int t,n;
int i,j,k,l,m;
memset(s,0,sizeof(s)); //二维数组的初始化 0跟一维数组一样
s[1][0]=1;
s[2][0]=1;
l=1; //控制位数
for(i=3;i<=1000;i++)
{
k=0; //控制进位
for(j=0;j<l;j++)
{
//s[i][j]=k+s[i-1][j]+s[i-2][j];
//这样做行不通,需要再定义一个变量来存储
m=k+s[i-1][j]+s[i-2][j];
s[i][j]=m%10;
k=m/10;
if(j==l-1&&k!=0)
l++;
}
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=1000;;i--)
if(s[n][i]!=0)
break;
for(j=i;j>=0;j--)
printf("%d",s[n][j]);
printf("\n");
}
return 0;
}
只是重复大数加法的运算 */
#include<stdio.h>
#include<string.h>
int s[1100][1100];
int main()
{
int t,n;
int i,j,k,l,m;
memset(s,0,sizeof(s)); //二维数组的初始化 0跟一维数组一样
s[1][0]=1;
s[2][0]=1;
l=1; //控制位数
for(i=3;i<=1000;i++)
{
k=0; //控制进位
for(j=0;j<l;j++)
{
//s[i][j]=k+s[i-1][j]+s[i-2][j];
//这样做行不通,需要再定义一个变量来存储
m=k+s[i-1][j]+s[i-2][j];
s[i][j]=m%10;
k=m/10;
if(j==l-1&&k!=0)
l++;
}
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=1000;;i--)
if(s[n][i]!=0)
break;
for(j=i;j>=0;j--)
printf("%d",s[n][j]);
printf("\n");
}
return 0;
}