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.

 

注意有多个测试样例。

代码:

#include <iostream>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;

int n;

int main() {
    while(~scanf("%d",&n)) {
        char s[2][1005] = {"1","1"};
        char *a = s[0],*b = s[1];
        for(int i = 3;i <= n;i ++) {
            int d = 0,j;
            for(j = 0;a[j];j ++) {
                if(b[j]) d += b[j] - '0';
                d += a[j] - '0';
                b[j] = d % 10 + '0';
                d /= 10;
            }
            while(d) {
                b[j ++] = d % 10 + '0';
                d /= 10;
            }
            b[j] = 0;
            swap(a,b);
        }
        reverse(a,a + strlen(a));
        printf("%s\n",a);
    }
}