Pagini recente » Cod sursa (job #2577664) | Cod sursa (job #714634) | Cod sursa (job #1260475) | Cod sursa (job #2582760) | Cod sursa (job #425880)
Cod sursa(job #425880)
#include <stdio.h>
#include <string.h>
#define pmax 50050
#define nmax 25
#define r 10000
int n, m, x, S, zero=50000, nr [pmax], sums [2] [2*pmax];
void prod ()
{
int i, j;
for (i=1; i <= n; ++i)
for (j=1; j <= m; ++j)
{
nr [++nr [0]]=i*j;
S+=nr [nr [0]];
}
}
void sume ()
{
int Sf=2*zero;
sums [0] [zero]=sums [1] [zero] = 1;
int i, j;
for (i=1; i <= nr [0]; ++i)
{
for (j=Sf; j >= 0; --j)
if (sums [0] [j] != 0)
{
sums [1] [j+nr [i]]+=sums [0] [j];
//fprintf (stderr, "%d ", j+nr [i]);
sums [1] [j+nr [i]]%=r;
}
for (j=0; j <= Sf; ++j)
if (sums [0] [j] != 0 && j-nr [i] >= 0)
{
sums [1] [j-nr [i]]+=sums [0] [j];
sums [1] [j-nr [i]]%=r;
}
memcpy (sums [0], sums [1], sizeof (sums [0]));
}
}
int main ()
{
freopen ("diamant.in", "r", stdin);
freopen ("diamant.out", "w", stdout);
scanf ("%d%d%d", &n, &m, &x);
prod ();
if (x > S) {printf ("0\n"); return 0;}
sume ();
printf ("%d\n", sums [0] [zero+x]);
return 0;
}