Fibonacci Number |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
Total submit users: 2105, Accepted users: 1749 |
Problem 10072 : No special judgement |
Problem description |
The Fibonacci Numbers {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...} are defined by the recurrence: F0 = 0 F1 = 1 Fi = Fi-1 + Fi-2 for all i >= 2 Write a program to calculate the Fibonacci Numbers. |
Input |
The first line of the input file contains a single integer T, the number of test cases. The following T lines, each contains an integer n ( 0 <= n <= 45 ), and you are expected to calculate Fn. |
Output |
Output Fn on a separate line. |
Sample Input |
5 0 3 5 9 20 |
Sample Output |
0 2 5 34 6765 |
Problem Source |
SJTU2004 |
AC:
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
inline void read(int& n)
{
char ch = getchar(); n = 0;
while (ch < '0' || ch > '9') { ch = getchar(); }
while (ch >= '0' && ch <= '9') { n = (n << 1) + (n << 3) + ch - '0'; ch = getchar(); }
}
long long fi(int n)
{
int a[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 };
if (n <= 10) return a[n];
long long a9 = 34, a10 = 55, s;
for (int i = 11; i <= n; ++i)
{
s = a9 + a10;
a9 = a10; a10 = s;
}
return s;
}
int main()
{
int n, m;
read(n);
for (int i = 0; i < n; ++i)
{
read(m);
printf("%lld\n", fi(m));
}
return 0;
}