long longの上限値を考慮して第90項まで対応。
#include <stdio.h>
#include <stdlib.h>
#define LIMIT 90
typedef long long i64;
i64 fib(int n);
i64 dp[LIMIT];
int main(int argc, char *argv[]) {
int n;
if(argc < 2) { return 1; }
n = atoi(argv[1]);
if(n < 1) { return 1; }
if(LIMIT < n) { return 1; }
printf("%3d: %lld\n", n, fib(n));
return 0;
}
i64 fib(int n) {
int i;
dp[1] = dp[2] = 1LL;
for(i=2; i<=n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}