Pagini recente » Cod sursa (job #2440093) | Cod sursa (job #561759) | Cod sursa (job #1752404) | Cod sursa (job #2695204) | Cod sursa (job #3266002)
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(x) (int)(x.size())
#define all(a) a.begin(), a.end()
#define nl '\n'
const int N = 2e5 + 5, INF = 1e9, VALMAX = 44100, val = 60000, mod = 10000;
int n, m, x, dp[2][N + 5];
int adun(int n) {
n += val;
return n;
}
/// dp[i] = numarul de diamante de calitate i (-20000 <= i <= 200000)
/// dp[i] +=
/// trb sa tin dp[coloana][suma] fiindca s ar putea sa updatez rucsacu gresit sa contribuie sume la (i, j, g) din (i, j, g)
int main() {
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
cin >> n >> m >> x;
dp[0][adun(0)] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
for (int g = -50000; g <= 50000; g++) {
dp[1][adun(g)] = (dp[0][adun(g)] + dp[0][adun(g - i * j)] + dp[0][adun(g + i * j)]) % mod;
}
for (int g = -50000; g <= 50000; g++) {
dp[0][adun(g)] = dp[1][adun(g)];
dp[1][adun(g)] = 0;
}
}
}
if (-x < -VALMAX) {
cout << 0;
return 0;
}
if (x > VALMAX) {
cout << 0;
return 0;
}
cout << dp[0][adun(x)];
}