动态规划+打表

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;

#define REP(n) for(int o=0;o<n;o++)

const int maxn = 41;
int ans[maxn]={1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,
987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,
196418,317811,514229,832040,1346269,2178309,3524578,5702887,
9227465,14930352,24157817,39088169,63245986,102334155,165580141};

int main() {

    //ans[0] = 1;
    //ans[1] = 1;
    //for(int i = 2;i < maxn;i++) {
    //    ans[i] = ans[i - 1] + ans[i - 2];
    //}

    //printf("ans[]={");
    //REP(maxn)
    //    printf("%d,",ans[o]);
    //printf("};\n");

    int n;
    while(scanf("%d",&n),n != 0) {
        printf("%d\n",ans[n]);
    }

    return 0;
}