#include #include #include #define MAXLEN 6 using namespace std; char s1[61]; char s2[61]; char r[61]; struct bigint { int n; int a[MAXLEN]; void operator = ( int x ) { n = 1; a[0] = x; } void operator = ( const bigint &B ) { n = B.n; for( int i = 0; i < n; ++i ) a[i] = B.a[i]; } void operator += ( const bigint &B ) { int i, carry = 0; for( i = 0; i < n || i < B.n || carry; ++i ) { int x = carry; if( i < n ) x += a[i]; if( i < B.n ) x += B.a[i]; if( x >= 1000000000 ) { x -= 1000000000; carry = 1; } else { carry = 0; } a[i] = x; } n = i; } void output() { int i = n-1; //fprintf( stderr, ":: %d\n", n ); printf( "%d", a[i] ); for( --i; i >= 0; --i ) printf( "%09d", a[i] ); printf( "\n" ); } }; bigint rez[60][60][60]; bigint rek(int d1,int d2,int d3) { bigint vrati; vrati=0; if(d3==0) { vrati=1; return vrati; } if(rez[d1][d2][d3].a[0]!=-1) return rez[d1][d2][d3]; for(int i=0;i