找找规律,这题其实是一道大数题。
斐波纳契数列,由于斐波那契数列的第200项很大,所以得开大一点。
#include<stdio.h>
#include<string.h>
int main()
{
int fab[201][50];
memset(fab, 0, sizeof(fab));
int i, j, k=0;
fab[1][0]=1;
fab[2][0]=2;
fab[3][0]=3;
for(i=4; i<=200; i++) //斐波纳契数列的初始化
{
for(j=0; j<=k; j++)
{
fab[i][j]+=(fab[i-1][j] + fab[i-2][j]);
if(fab[i][j]>10000)
{
fab[i][j+1]=fab[i][j]/10000;
if(k<j+1) k=j+1;
fab[i][j]%=10000;
}
}
}
char str[220];
int n, l;
scanf("%d", &n);
while(n--)
{
scanf("%s",str);
l=strlen(str);
for(i=48; i>=0; i--) //输出控制,从后往前找
if(fab[l][i]!=0 && fab[l][i+1]==0)
{
printf("%d", fab[l][i]);
for(j=i-1; j>=0; j--)
printf("%4.4d",fab[l][j]);
break;
}
printf("\n");
}
return 0;
}