Pagini recente » Cod sursa (job #3244255) | Cod sursa (job #27517) | Cod sursa (job #1111298) | Cod sursa (job #1925552) | Cod sursa (job #2483985)
#include <bits/stdc++.h>
#define MAXN (1 << 17)
#define MAXV 45000
#define MOD 10000
int N, M, X;
int A[MAXN], B[MAXN], maxval;
#define A (A+MAXV)
#define B (B+MAXV)
#define rest(x,y) ((x)-(x)/(y)*(y))
int solve(void)
{
int c = 0, i, j, val;
A[0] = 1;
for(i = 1; i <= N; i++)
for(j = 1; j <= M; j++)
{
if(c % 2 == 0)
for(val = -maxval; val <= maxval; val++)
{
B[val] = A[val]+A[val-i*j]+A[val+i*j];
B[val] = rest(B[val], MOD);
}
else
for(val = -maxval; val <= maxval; val++)
{
A[val] = B[val]+B[val-i*j]+B[val+i*j];
A[val] = rest(A[val], MOD);
}
c++;
}
if(c % 2 == 0)
return A[X];
else
return B[X];
}
int main(void)
{
freopen("diamant.in", "rt", stdin);
freopen("diamant.out", "wt", stdout);
scanf("%d %d %d\n", &N, &M, &X);
maxval = N*(N+1)*M*(M+1)/4;
if(X > maxval || X*(-1) > maxval)
printf("0\n");
else
printf("%d\n", solve());
return 0;
}