Pagini recente » Cod sursa (job #924635) | Cod sursa (job #2268511) | Cod sursa (job #2138922) | Cod sursa (job #1197035) | Cod sursa (job #2203748)
#include <stdio.h>
#include <algorithm>
const int MAX_X = 44100;
const int MOD = 10000;
int dp[2][MAX_X + 1000];
int main() {
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
int n, m, X;
scanf("%d%d%d", &n, &m, &X);
X = std::abs(X);
if (X >= MAX_X)
printf("0\n");
else {
dp[0][0] = 1;
int k = n * m;
for (int i = 1; i <= k; i++) {
int val;
if (i % n == 0)
val = (i / n) * n;
else
val = (i / n + 1) * (i % n);
for (int j = 0; j + val <= MAX_X; j++) {
int y = std::abs(j - val);
if (j + val >= MAX_X || y >= MAX_X)
break;
dp[i % 2][j] = (dp[(i - 1) % 2][j] + dp[(i - 1) % 2][j + val] + dp[(i - 1) % 2][y]) % MOD;
}
}
printf("%d\n", dp[(n * m) % 2][X]);
}
fclose(stdin);
fclose(stdout);
return 0;
}