Pagini recente » Cod sursa (job #387101) | Cod sursa (job #2988453) | Cod sursa (job #516507) | Cod sursa (job #469802) | Cod sursa (job #34403)
Cod sursa(job #34403)
#include <cstdio>
#include <string.h>
#define Nmax 21
#define Smax 44105
#define abs(x) (x)>=0?(x):-(x)
const int modul = 10000;
int n, m, x;
int d1[Smax], d2[Smax];
void citire()
{
scanf("%d %d %d\n", &n, &m, &x);
}
void solve()
{
int i, j, sum;
d2[0] = 1;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
{
memcpy(d1, d2, sizeof(d1));
memset(d2, 0, sizeof(d2));
for (sum = - Smax + 1; sum < Smax; ++sum)
{
if (sum - i*j >= 0)
{
d2[sum - i*j] += d1[abs(sum)];
if (d2[sum - i*j] >= modul)
d2[sum - i*j] -= modul;
}
if (sum >= 0)
{
d2[sum] += d1[sum];
if (d2[sum] >= modul)
d2[sum] -= modul;
}
if (sum + i*j >= 0)
{
d2[sum + i*j] += d1[abs(sum)];
if (d2[sum + i*j] >= modul)
d2[sum + i*j] -= modul;
}
}
}
sum = abs(x);
if (sum < Smax)
printf("%d\n", d2[sum]);
else
printf("0\n");
}
int main()
{
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
citire();
solve();
return 0;
}