Pagini recente » Cod sursa (job #1297711) | Cod sursa (job #2045934) | Cod sursa (job #717873) | Cod sursa (job #6984) | Cod sursa (job #2851547)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
const int MOD = 10000, V = 9000;
int n, m, X, len;
int dp[2][95000], a[405];
void solve()
{
if (abs(X) > n * (n + 1) / 2 * m * (m + 1) / 2)
fout << 0 << "\n";
else
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
a[++len] = i * j;
}
}
dp[0][V / 2] = 1;
int L = 0;
for (int i = 1; i <= len; i++)
{
L = 1 - L;
for (int j = 0; j <= V; j++)
{
dp[L][j] = dp[1 - L][j];
if (j >= a[i])
{
dp[L][j] += dp[1 - L][j - a[i]];
}
dp[L][j] += dp[1 - L][j + a[i]];
dp[L][j] = dp[L][j] % MOD;
}
}
X += 4500;
fout << dp[L][X];
}
}
int main()
{
fin >> n >> m >> X;
solve();
return 0;
}