Pagini recente » Cod sursa (job #1627854) | Cod sursa (job #2748497) | Cod sursa (job #3258723) | Cod sursa (job #2967578) | Cod sursa (job #2589810)
#include <stdio.h>
#include <vector>
#define NMAX 50001
using namespace std;
int d[2][NMAX * 3 + 4 ] ;
int main() {
FILE *fin, *fout ;
fin = fopen ("diamant.in", "r" ) ;
fout = fopen ("diamant.out", "w" ) ;
int s, i, j, n, m, X, t, k ;
fscanf(fin, "%d%d%d", &n, &m, &X);
s = 0 ;
d[0][NMAX] = d[1][NMAX] = 1;
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= m; j++ )
s += i * j ;
if ( s < X )
fprintf ( fout, "0" ) ;
else {
s = 0 ;
for ( i = 1 ; i <= n ; i++ ) {
for ( j = 1 ; j <= m ; j++ ) {
t = i * j ;
s += t ;
for ( k = s + NMAX; k >= -s + NMAX && k >= 0 ; k-- ) {
if ( k - t > 0 )
d[1][k] = ( d[1][k] + d[0][k-t]) % 10000 ;
if ( k + t < 2 * NMAX )
d[1][k] = ( d[1][k] + d[0][k+t] ) % 10000 ;
}
for ( k = 0; k <= 3 * NMAX ; k++ )
d[0][k] = d[1][k] ;
}
}
fprintf(fout, "%d", d[1][X+NMAX] % 10000 ) ;
}
return 0;
}