Pagini recente » Cod sursa (job #986407) | Cod sursa (job #345423) | Cod sursa (job #700505) | Cod sursa (job #1066160) | Cod sursa (job #2895687)
#include<bits/stdc++.h>
using namespace std;
#define MOD 10000
int n, m, s, sum_max, dp[200005];
int aux[200005];
int main()
{
cin >> n >> m >> s;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
sum_max += i * j;
if (s > sum_max || s < -sum_max) {
cout << -1;
return 0;
}
dp[sum_max] = 1;
int max_val = sum_max, min_val = sum_max, copie_min_val = sum_max, copie_max_val = sum_max;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
for (int k = copie_max_val; k >= copie_min_val; k--) {
if (dp[k]) {
aux[k + i * j] += dp[k];
aux[k + i * j] %= MOD;
max_val = max(max_val, k + i * j);
aux[k - i * j] += dp[k];
aux[k - i * j] %= MOD;
min_val = min(min_val, k - i * j);
}
}
for (int k = min_val; k <= max_val; k++) {
dp[k] += aux[k];
dp[k] %= MOD;
aux[k] = 0;
}
copie_max_val = max_val;
copie_min_val = min_val;
}
cout << dp[sum_max + s];
return 0;
}