Pagini recente » Cod sursa (job #1281747) | Cod sursa (job #653652) | Cod sursa (job #2141545) | Cod sursa (job #107219) | Cod sursa (job #887615)
Cod sursa(job #887615)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define MOD 10000
inline int good(int number) { return number % MOD; }
inline int abs(int number) { return (number < 0 ? -number : number); }
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int N, M, SMAX, X, step(1);
int dp[2000000][2];
int main() {
fin >> N >> M >> X;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= M; j++)
SMAX = SMAX + i * j;
dp[0 + SMAX][0] = 1;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= M; j++, step++) {
for (int k = -SMAX; k <= SMAX; k++) {
dp[k + SMAX][step & 1] = dp[k + SMAX][!(step & 1)];
dp[k + SMAX][step & 1] += dp[k - i * j + SMAX][!(step & 1)];
dp[k + SMAX][step & 1] += dp[k + i * j + SMAX][!(step & 1)];
dp[k + SMAX][step & 1] = good(dp[k + SMAX][step & 1]);
}
cout << '\n';
}
fout << (abs(X) <= abs(SMAX) ? dp[X + SMAX][!(step & 1)] : 0) << '\n';
fout.close();
return 0;
}