#include <cstdio> #include <string> int N; char f[61][61][61][90]; void dp (); void print ( int, int, int ); int main () ...{ //freopen ( "in.txt", "r", stdin ); dp (); while ( scanf ( "%d", &N ) ==1 ) ...{ //printf ( "%0.0f ", f[N][N][N] ); print ( N, N, N ); printf ( "" ); } return0; } void print ( int a, int b, int c ) ...{ int i; for ( i =89; i >=0; i -- ) ...{ if ( f[a][b][c][i] ) break; } if ( i ==-1 ) printf ( "0 " ); else ...{ for ( ; i >=0; i -- ) printf ( "%d", f[a][b][c][i] ); printf ( "" ); } } void dp () ...{ int a, b, c, l, i, ac =0; memset ( f, 0, sizeof ( f ) ); f[1][0][0][0] =1; for ( l =2; l <=180; l ++ ) ...{ for ( a =0; a <= l && a <=60; a ++ ) ...{ for ( b =0; b <= a && b <=60; b ++ ) ...{ c = l - a - b; if ( c > b ) continue; if ( c <0 ) break; if ( a >0 ) ...{ //f[a][b][c] += f[a - 1][b][c]; ac =0; for ( i =0; i <90; i ++ ) ...{ f[a][b][c][i] += f[a -1][b][c][i] + ac; if ( f[a][b][c][i] >=10 ) ac =1, f[a][b][c][i] -=10; else ac =0; } } if ( b >0 ) ...{ //f[a][b][c] += f[a][b - 1][c]; ac =0; for ( i =0; i <90; i ++ ) ...{ f[a][b][c][i] += f[a][b -1][c][i] + ac; if ( f[a][b][c][i] >=10 ) ac =1, f[a][b][c][i] -=10; else ac =0; } } if ( c >0 ) ...{ //f[a][b][c] += f[a][b][c - 1]; ac =0; for ( i =0; i <90; i ++ ) ...{ f[a][b][c][i] += f[a][b][c -1][i] + ac; if ( f[a][b][c][i] >=10 ) ac =1, f[a][b][c][i] -=10; else ac =0; } } } } } }