// The mook jong.cpp #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 #define PI 3.1415926535897932626 #define EXIT exit(0); #define PAUSE system("pause"); #define DEBUG puts("Here is a BUG"); #define SYNC_CLOSE ios::sync_with_stdio(false); #define what_is(x) cout << #x << " is " << x << endl; #define CLEAR(name, init) memset(name, init, sizeof(name)); const double eps = 1e-8; const int MAXN = (int)1e9 + 5; using namespace std; LL C[66][66]; void init(void) { CLEAR(C, 0); C[0][0] = 1; for(int i = 1; i < 66; i++) { C[i][0] = C[i][i] = 1; for(int j = 1; j < i; j++) { C[i][j] = C[i-1][j-1] + C[i-1][j]; } } for(int i = 0; i < 6; i++) { for(int j = 0; j <= i; j++) { cout << C[i][j] << " \n"[j==i]; } } } int main(int argc, char const *argv[]) { #ifndef ONLINE_JUDGE freopen("D:\\Documents\\Disk_Synchronous\\Programs\\Acm\\input.txt", "r", stdin); #endif LL dp[66][66]; CLEAR(dp, 0); for(int i = 1; i <= 60; i++) { dp[i][1] = i; for(int j = 2; 3*j-2 <= i; j++) { // what_is(i); what_is(j); if (i == 3*j-2) dp[i][j] = 1; else dp[i][j] = dp[i-1][j] + dp[i-3][j-1]; } } /*for(int i = 1; i <= 60; i++) { for(int j = 1; 3*j-2 <= i; j++) { cout << dp[i][j] << ' '; } puts(""); }*/ LL res[66] = {0}; for(int i = 1; i <= 60; i++) { LL tmp = 0; for(int j = 1; 3*j-2 <= i; j++) { tmp += dp[i][j]; } res[i] = tmp; // cout << tmp << " \n"[i==60]; } int n; while(cin >> n) { cout << res[n] << endl; } return 0; }