Pagini recente » Cod sursa (job #2773649) | Cod sursa (job #2896389) | Cod sursa (job #3238986) | Cod sursa (job #1793999) | Cod sursa (job #2083811)
#include <bits/stdc++.h>
using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
const int NMAX = 500;
const int VMAX = 500;
const int ADAG = NMAX * VMAX;
const int MOD = 10000;
int d[2][2*VMAX*NMAX + 5];
int N, M, v[NMAX+2], ind;
long long X;
int main()
{
in >> N >> M >> X;
for( int i = 1; i <= N; ++i ) for( int j = 1; j <= M; ++j ) {
v[++ind] = i*j;
}
int st = 0, dr = 0;
d[0][ ADAG + 0 ] = 1;
int lev = 1;
for( int i = 1; i <= ind; ++i, lev ^= 1 ) {
memset( d[lev], 0, sizeof(d[lev]) );
for( int j = st - v[i]; j <= dr + v[i]; ++j ) {
d[lev][ADAG + j] = d[lev^1][ADAG + j - v[i]] + d[lev^1][ADAG + j + v[i]] + d[lev^1][ADAG + j];
d[lev][ADAG + j] %= MOD;
}
st -= v[i];
dr += v[i];
}
if( X < st || X > dr ) X = 0;
else X = d[lev^1][ADAG + X];
out << X << '\n';
return 0;
}