Pagini recente » Cod sursa (job #2988349) | Cod sursa (job #3194995) | Cod sursa (job #2706119) | Cod sursa (job #2573401) | Cod sursa (job #51907)
Cod sursa(job #51907)
#include <stdio.h>
#define fin "diamant.in"
#define fout "diamant.out"
#define Smax 99226
#define Mod 10000
int s1[2*Smax]={0},s2[2*Smax]={0};
int N,M,X;
int main() {
int i,j;
register int k,val,lim;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d%d%d",&N,&M,&X);
s1[Smax]=1;
lim=N*(N+1)*M*(M+1)/4;
if (lim>Smax)
lim=Smax-1;
if (X<=-lim || X>=lim) {
printf("0\n");
return 0;
}
for (i=1;i<=N;++i)
for (j=1;j<=M;++j) {
val=i*j;
for (k=-lim;k<=lim;++k)
if (k-val>-Smax && s1[k-val+Smax]) {
s2[k+Smax]=s2[k+Smax]+s1[k-val+Smax];
if (s2[k+Smax]>=Mod)
s2[k+Smax]-=Mod;
}
val*=-1;
for (k=-lim;k<=lim;++k)
if (k-val<Smax && s1[k-val+Smax]) {
s2[k+Smax]+=s1[k-val+Smax];
if (s2[k+Smax]>=Mod)
s2[k+Smax]-=Mod;
}
for (k=-lim;k<=lim;++k) {
s1[k+Smax]+=s2[k+Smax];
if (s1[k+Smax]>=Mod)
s1[k+Smax]-=Mod;
s2[k+Smax]=0;
}
}
printf("%d\n",s1[X+Smax]);
fclose(stdin); fclose(stdout);
return 0;
}