题目描述
斐波那契数列为:1,1,2,3,5,8,13.....,常规递推公式f(n)=f(n-1)+f(n-2);
输入
输入一个整数n(0<=n<=200),为多组数据。
输出
输出第n个斐波那契数
样例输入
1 2 4
样例输出
1 2 5
本题思想就是将算的的每一位数放到数组里面,然后让前面两项的各个位数相加,处理好进位的问题就OK了;
代码如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
while(~scanf("%d",&n))
{
int a[201][100]={0};
a[0][0]=1,a[1][0]=1;
int k,j=0;
for(i=2;i<=n;i++)
{
for(k=0;k<=j;k++)
{
a[i][k]=a[i][k]+a[i-1][k]+a[i-2][k];
if(a[i][k]>=10)
{
a[i][k+1]=a[i][k]/10;
a[i][k]=a[i][k]%10;
}
}
if(a[i][j+1]!=0) j++;
}
for(i=j;i>=0;i--)
{
printf("%d",a[n][i]);
}
printf("\n");
}
return 0;
}