Pagini recente » Cod sursa (job #2194142) | Cod sursa (job #1431529) | Cod sursa (job #692141) | Cod sursa (job #2559277) | Cod sursa (job #51913)
Cod sursa(job #51913)
#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;
#define s1 ( s1 + Smax )
#define s2 ( s2 + Smax )
int main() {
int i,j,k,val,lim;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d%d%d",&N,&M,&X);
s1[0]=1;
lim=N*(N+1)*M*(M+1)/4;
if (lim>Smax)
lim=Smax-1;
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]) {
s2[k]=s2[k]+s1[k-val];
if (s2[k]>=Mod)
s2[k]-=Mod;
}
val*=-1;
for (k=-lim;k<=lim;++k)
if (k-val<Smax && s1[k-val]) {
s2[k]+=s1[k-val];
if (s2[k]>=Mod)
s2[k]-=Mod;
}
for (k=-lim;k<=lim;++k) {
s1[k]+=s2[k];
if (s1[k]>=Mod)
s1[k]-=Mod;
s2[k]=0;
}
}
printf("%d\n",s1[X]);
fclose(stdin); fclose(stdout);
return 0;
}