Pagini recente » Cod sursa (job #184241) | Cod sursa (job #2477003) | Cod sursa (job #2988011) | Cod sursa (job #597309) | Cod sursa (job #36309)
Cod sursa(job #36309)
#include <stdio.h>
#include <string.h>
#define modulo 10000
#define nmax 20
#define valplus 44105
#define valmax 88215
int n,m,x,val,x1;
int a[valmax],b[valmax];
inline int f(int x) {
return x + valplus;
}
int main() {
freopen("diamant.in","r",stdin);
freopen("diamant.out","w",stdout);
scanf("%d %d %d\n",&n,&m,&x);
for(int i = 0; i < valmax; i++) a[i] = b[i] = -1;
a[f(0)] = 1;
int vmax = 0,nvmax = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++) {
memset(b,-1,sizeof(b));
for(int k = -vmax; k <= vmax; k++) {
x1 = f(k);
if(a[x1] != -1) {
int nv = k + i * j;
if(nv > nvmax) nvmax = nv;
nv = f(nv);
if(b[nv] == -1) b[nv]++;
b[nv] += a[x1];
if(b[nv] > modulo) b[nv] -= modulo;
nv = k;
nv = f(nv);
if(b[nv] == -1) b[nv]++;
b[nv] += a[x1];
if(b[nv] > modulo) b[nv] -= modulo;
nv = k - i * j;
nv = f(nv);
if(b[nv] == -1) b[nv]++;
b[nv] += a[x1];
if(b[nv] > modulo) b[nv] -= modulo;
}
}
if(vmax < nvmax) vmax = nvmax;
for(int k = -vmax; k <= vmax; k++)
a[f(k)] = b[f(k)];
}
printf("%d\n",a[f(x)]);
return 0;
}