Pagini recente » Cod sursa (job #744654) | Cod sursa (job #44067) | Cod sursa (job #2265792) | Cod sursa (job #653294) | Cod sursa (job #2831660)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
const int mod = 1e4;
void addSelf(int &x, const int &y) {
x += y;
if (x >= mod) {
x -= mod;
}
}
void testCase() {
int n, m, x;
fin >> n >> m >> x;
int N = n * (n + 1) / 2 * m * (m + 1) / 2;
if (abs(N) < abs(x)) {
fout << "0\n";
return;
}
vector<int> dp(1 + 2 * N);
dp[N] = 1;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
vector<int> newDp(1 + 2 * N);
for (int sum = 0; sum <= 2 * N; ++sum) {
newDp[sum] = dp[sum];
if (sum - i * j >= 0) {
addSelf(newDp[sum], dp[sum - i * j]);
}
if (sum + i * j <= 2 * N) {
addSelf(newDp[sum], dp[sum + i * j]);
}
}
swap(dp, newDp);
}
}
fout << dp[x + N] << '\n';
}
int main() {
int tests = 1;
for (int tc = 0; tc < tests; ++tc) {
testCase();
}
fin.close();
fout.close();
return 0;
}