Pagini recente » Cod sursa (job #2550340) | Cod sursa (job #2682098) | Cod sursa (job #2467946) | Cod sursa (job #2791034) | Cod sursa (job #2533439)
#include <fstream>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
const int MOD = 10000, NMax = 20, SMax = 44100;
int N, M, X, Cost[NMax * NMax + 5], ct, DP[2][2 * SMax + 5], oo = 2 * SMax + 2;
int main()
{
fin >> N >> M >> X;
X += SMax;
if(X < 0 || X > 2 * SMax)
{
fout << "0\n";
return 0;
}
for(int i = 1; i <= N; i++)
for(int j = 1; j <= M; j++)
Cost[++ct] = i * j;
DP[0][SMax] = 1;
for(int code = 1; code <= ct; code++) {
int line = (code & 1), linePred = ((code - 1) & 1), cost = Cost[code];
for(int sum = 0; sum <= 2 * SMax; sum++) {
DP[line][sum] = DP[linePred][sum];
if(sum - cost >= 0)
DP[line][sum] += DP[linePred][sum - cost];
if(sum + cost <= 2 * SMax)
DP[line][sum] += DP[linePred][sum + cost];
DP[line][sum] %= MOD;
}
}
fout << DP[ct & 1][X] << '\n';
fin.close();
fout.close();
return 0;
}