AOJ0168
JOIが近づいてきたのでAOJやろうと思った。
#include<iostream> using namespace std; int n; const int MAX_N = 30; bool done[MAX_N + 1]; int memo[MAX_N + 1]; int solve(int n){ if(n == 0) return 1; if(n == 1) return 1; if(n == 2) return 2; if(done[n]) return memo[n]; done[n] = true; return memo[n] = solve(n - 1) + solve(n - 2) + solve(n - 3); } int main(){ while(cin >> n, n){ int ans = 0; ans = solve(n) / 3650; if(solve(n) % 3650) ans++; cout << ans << endl; } return 0; }