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