Pagini recente » Cod sursa (job #2754221) | Cod sursa (job #2226458) | Cod sursa (job #802132) | Cod sursa (job #917758) | Cod sursa (job #36319)
Cod sursa(job #36319)
#include <stdio.h>
#include <string.h>
#define modulo 10000
#define nmax 222
#define valplus 44105
#define valmax 100000
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);
if(x >= valmax) {
printf("0\n");
return 0;
}
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;
}