Pagini recente » Cod sursa (job #2134651) | Cod sursa (job #2381261) | Cod sursa (job #2725140) | Cod sursa (job #2627321) | Cod sursa (job #2300455)
#include <bits/stdc++.h>
#define all(cont) cont.begin(), cont.end()
#define pb push_back
#define fi first
#define se second
#define DEBUG(x) cerr << (#x) << ": " << (x) << '\n'
using namespace std;
typedef pair <int, int> pii;
typedef vector <int> vi;
typedef long long ll;
typedef unsigned long long ull;
ifstream f ("diamant.in");
ofstream g ("diamant.out");
const int MOD = 10000;
const int NMAX = 405;
const int SMAX = 441005;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
#ifdef LOCAL_DEFINE
freopen (".in", "r", stdin);
#endif
int n, m, x;
f >> n >> m >> x;
int sum = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
sum += i * j;
}
}
if (x > sum || x < -sum) {
g << "0\n";
f.close(); g.close(); return 0;
}
int now = 1, old = 0;
vector <vector <short>> dp(n * m + 50, vector <short> (2 * sum + 5, 0));
dp[old][sum] = 1;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
for (int s = 0;s <= 2 * sum; ++s) {
dp[now][s] = dp[old][s];
if (s + i * j <= 2 * sum) {
dp[now][s] += dp[old][s + i * j];
}
if (s - i * j >= 0) {
dp[now][s] += dp[old][s - i * j];
}
dp[now][s] %= MOD;
}
swap (now, old);
}
}
g << dp[old][x + sum] << '\n';
f.close();
g.close();
return 0;
}