Pagini recente » Cod sursa (job #2262086) | Cod sursa (job #2269016) | Cod sursa (job #1455475) | Cod sursa (job #493761) | Cod sursa (job #35276)
Cod sursa(job #35276)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define MAXN 44105
#define MODULO 10000
#define ABS(x) ((x) >= 0 ? (x) : -(x))
int N, M, X, i, j, k;
int p[MAXN], np[MAXN];
int main(void)
{
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %d", &N, &M, &X);
if (ABS(X) > M * (M + 1) * N * (N + 1) / 4)
{
printf("0\n"); return 0;
}
memset(p, 0, sizeof(p));
p[0] = 1;
for (i = 1; i <= N; i ++)
for (j = 1; j <= M; j ++)
{
memcpy(np, p, sizeof(p));
(np[i * j] += p[0]) %= MODULO;
for (k = 1; k < MAXN; k ++)
if (p[k])
{
(np[k + i * j] += p[k]) %= MODULO;
if (k >= i * j)
(np[k - i * j] += p[k]) %= MODULO;
if (i * j - k >= 0)
(np[i * j - k] += p[k]) %= MODULO;
}
memcpy(p, np, sizeof(np));
}
printf("%d\n", p[ABS(X)]);
return 0;
}