Pagini recente » Cod sursa (job #1917307) | Cod sursa (job #1369432) | Cod sursa (job #1352898) | Cod sursa (job #2087813) | Cod sursa (job #38877)
Cod sursa(job #38877)
#include <cstdio>
#define FIN "diamant.in"
#define FOUT "diamant.out"
#define NMAX 1<<16
int s1[NMAX], s2[NMAX];
int N, M, X;
void read ()
{
scanf ("%d%d%d", &N, &M, &X);
}
void solve ()
{
int i, j, lim;
s1[1] = s1[0] = 1;
if (X < 0)
X = -X;
lim = M * (M + 1) * N * (N + 1) / 4;
if (X > lim)
{
printf ("0\n");
return;
}
for (int p = 1; p < N*M; ++ p)
{
for (int x = 0; x <= lim; ++ x)
{
i = p / M + 1;
j = p % M + 1;
if (x - i*j > 0)
s2[x] = s1[x - i*j] + s1[x + i*j] + s1[x];
else
s2[x] = s1[i*j - x] + s1[x + i*j] + s1[x];
if (s2[x] > 10000)
s2[x] -= 10000;
if (s2[x] > 10000)
s2[x] -= 10000;
}
for (int x = 0; x <= lim; ++ x)
s1[x] = s2[x];
}
printf ("%d\n", s1[X]%10000);
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
read ();
solve ();
return 0;
}