#include<stdio.h>//大斐波那契
#include<string.h>
int a[1010][510];
void fib()
{
int s,c;
a[1][0]=1;a[2][0]=1;
for(int i=3;i<1001;i++)
{
c=0;
for(int j=0;j<=500;j++)//以下步骤模拟大数计算,初始化斐波那契数列
{
s=a[i-1][j]+a[i-2][j]+c; //令 个位数 与 进位 相加
a[i][j]=s%10; //存储各位上的数
c=s/10; //大于10 存储进位数字
}
}
}
int main()
{
fib(); //调用函数
int n,p,i;
scanf("%d",&n);
while(n--)
{
scanf("%d",&p);
for(i=500;i>=0;i--)//找到数值的最后一位
{
if(a[p][i])
break;
}
for(;i>=0;i--)// 注意上面的函数计算的值的数位是逆序的
{
printf("%d",a[p][i]);
}
printf("\n");
}
return 0;
}
大斐波那契
最新推荐文章于 2021-12-08 19:36:27 发布