HDU - 1715 大菲波数(大数)

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_46703995/article/details/113095214