Pagini recente » Cod sursa (job #2901285) | Cod sursa (job #1289754) | Cod sursa (job #1104288) | Cod sursa (job #1295667) | Cod sursa (job #2282238)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
const int MOD = 10000;
const int NMAX = 44100;
int DP[2][2 * NMAX + 50];
int main() {
ios::sync_with_stdio(false);
int n, m, x;
fin >> n >> m >> x;
int lim = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
lim += i * j;
}
}
if (x < 0) x = -x;
if (x > lim) {
fout << 0;
return 0;
}
int mx = 2 * lim;
DP[0][lim] = 1;
int now = 1, prev = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
int val = i * j;
for (int k = 0; k <= mx; ++k) {
DP[now][k] = DP[prev][k];
}
for (int k = 0; k + val <= mx; ++k) {
DP[now][k] = (DP[now][k] + DP[prev][k + val]);
if (DP[now][k] >= MOD) {
DP[now][k] -= MOD;
}
}
for (int k = val; k <= mx; ++k) {
DP[now][k] = (DP[now][k] + DP[prev][k - val]);
if (DP[now][k] >= MOD) {
DP[now][k] -= MOD;
}
}
now = 1 - now;
prev = 1 - prev;
}
}
fout << DP[1 - now][lim + x];
return 0;
}