Pagini recente » Cod sursa (job #1815708) | Cod sursa (job #581693) | Cod sursa (job #2404746) | Cod sursa (job #2025691) | Cod sursa (job #2282224)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
const int MOD = 10000;
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;
vector < int > DP[2];
for (auto &x: DP) x.resize(mx + 5);
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];
if (k + val <= mx) {
DP[now][k] = (DP[now][k] + DP[prev][k + val]) % MOD;
}
if (k - val >= 0) {
DP[now][k] = (DP[now][k] + DP[prev][k - val]) % MOD;
}
}
now = 1 - now;
prev = 1 - prev;
}
}
fout << DP[1 - now][lim + x];
return 0;
}