Pagini recente » Monitorul de evaluare | Cod sursa (job #1952769) | Cod sursa (job #2687070) | Cod sursa (job #2458680) | Cod sursa (job #35044)
Cod sursa(job #35044)
#include <cstdio>
using namespace std;
const char iname[] = "diamant.in";
const char oname[] = "diamant.out";
#define inf - 44105
#define sup + 44105
#define modulo 10000
int V[2][sup - inf];
int main(void)
{
freopen(iname, "r", stdin);
int N;
int M;
int X;
scanf("%d %d", & N, & M);
scanf("%d", & X);
int stp = 0;
V[stp][sup] = 1;
for (int i = 1; i <= N; ++ i) {
for (int j = 1; j <= M; ++ j) {
int num = i * j;
stp ^= 1;
for (int k = inf + 1; k < sup; ++ k)
V[stp][k + sup] = V[stp ^ 1][k + sup];
for (int k = inf + 1; k < sup; ++ k) {
if (V[stp ^ 1][k + sup] > 0)
V[stp][k + num + sup] = (V[stp][k + num + sup] + V[stp ^ 1][k + sup]) % modulo,
V[stp][k - num + sup] = (V[stp][k - num + sup] + V[stp ^ 1][k + sup]) % modulo;
}
}
}
if (X < 0)
X = - X;
freopen(oname, "w", stdout);
if (X >= sup)
printf("0\n");
else
printf("%d\n", V[stp][X + sup]);
return 0;
}