hoj 1533 Fibonacci Numbers

A Fibonacci sequence is calculated by adding the previous two members of the sequence, with the first two members being both 1.

f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2)

Your task is to take a number as input, and print that Fibonacci number.

Sample Input

100
Sample Output
354224848179261915075

Note:

No generated Fibonacci number in excess of 1000 digits will be in the test data, i.e. f(20) = 6765 has 4 digits.

简单的模拟大数加法。

具体实现如下:

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
#define Max_Szie 5000 + 2
int A[Max_Szie], B[Max_Szie], C[Max_Szie];
void solve(int n)
{
	memset(A, 0, sizeof(A));
	memset(B, 0, sizeof(B));
	memset(C, 0, sizeof(C));
	A[0] = 1, B[0] = 1;
	int i, j;
	for (i = 2; i < n; i++)
	{
		int c = 0;
		for (j = 0; j < Max_Szie; j++)
		{
			int temp = A[j] + B[j] + c;
			c = temp / 10;
			C[j] = temp % 10 ;
		}
		memcpy(A, B, sizeof(B));
		memcpy(B, C, sizeof(C));
	}
	j = Max_Szie - 1;
	while (!C[j])
		j--;
	for (; j >= 0; j--)
		printf("%d", C[j]);
	printf("\n");
}
int main()
{
	int n;
	while (EOF != scanf("%d", &n))
		solve(n);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值