Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
Input
输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
Output
输出为N行,每行为对应的f(Pi)。
Sample Input
5
1
2
3
4
5
Sample Output
1
1
2
3
5
解题思路:
大数加法
#include<stdio.h>
int f[1005][605];
int main()
{
int i,n,t;
f[1][0] = f[2][0] = 1;
f[1][1] = f[2][1] = 1;
int len = 1;
for (i = 3; i <= 1000; i++)//打表
{
for (int j = 1; j <= len; j++)
{
f[i][j] += f[i - 1][j] + f[i - 2][j];
if(f[i][j] >= 10)
{
f[i][j + 1]+= f[i][j] / 10;
f[i][j]%= 10;
}
}
while(f[i][len + 1])
{
len++;
}
f[i][0] = len;
}
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
for (i = f[n][0]; i >= 1; i--)
{
printf("%d", f[n][i]);
}
printf("\n");
}
return 0;
}