1041: 二哥的困惑 Ⅳ
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 279 Solved: 90
[Submit][Status][Web Board]
Description
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.
Input
Input contains several cases, every case contains a positive integer number N.
Output
print the Nth Fibonacci number.
Sample Input
100
Sample Output
354224848179261915075
HINT
Source
【解析】
大数运算的做法。
#include <bits/stdc++.h>
using namespace std;
int i, j, n, a[8000][255];
int main(void)
{
a[1][1] = 1;
a[2][1] = 1;
for (i = 3; i<8000; i++)
for (j = 1; j<255; j++)
{
a[i][j] += a[i - 1][j] + a[i - 2][j];
a[i][j + 1] += a[i][j] / 100000000;//满1亿进1
a[i][j] = a[i][j] % 100000000;
}
while (~scanf("%d", &n))
{
for (i = 254; i>0; i--)//倒序输出
if (a[n][i])
break;
printf("%d", a[n][i]);
for (--i; i>0; i--)
printf("%.8d", a[n][i]);
printf("\n");
}
return 0;
}