泰波那契数列-大数相加
#include<stdio.h>
#define N 1000
int main()
{
int a[N]={0}; //泰波那契数列前三个 0,1,1
int b[N]={1};
int c[N]={1};
int t[N]={0};
int i,n;
scanf("%d",&n);
int j;
int g=0;
int jin;
for(i=3;i<n;i++)
{
if(c[g]!=0)
{
g++; //确定最高位
}
for(j=0;j<g;j++)
{
t[j]=a[j]+b[j]+c[j]+t[j];//为了加上进位,所以加t[j]
jin=t[j]/10;
t[j+1]=jin;
t[j]%=10;
}
for(j=0;j<=g;j++)
{
a[j]=b[j];
b[j]=c[j];
c[j]=t[j];
t[j]=0; //每轮要清空t[i]的值,防止下一轮干扰
}
}
if(c[g]!=0)
g++; //使g的值比最高位多一
for(i=g-1;i>=0;i--)
printf("%d",c[i]);
}