Pagini recente » Monitorul de evaluare | Cod sursa (job #2753845) | Cod sursa (job #1260294) | Cod sursa (job #71212) | Cod sursa (job #1659869)
#include<cstdio>
const int V=44100;
const int MOD=10000;
const int N=20;
int ki[2*V+N];
int k1[2*V+N];
int k2[2*V+N];
int ob[N*N*2+N];
int n,m,x;
void upd(int&x){
if(x>MOD)
x-=MOD;
}
int modul(int x){
if(x<0)
return -x;
return x;
}
int main(){
freopen("diamant.in","r",stdin);
freopen("diamant.out","w",stdout);
scanf("%d%d%d",&n,&m,&x);
if(modul(x)>V){
printf("0");
return 0;
}
int k=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ob[++k]=i*j;
ki[V]=1;
for(int i=1;i<=k;i++){
for(int j=0;j<2*V+N;j++){
k1[j]=ki[j];
k2[j]=ki[j];
}
for(int j=0;j<2*V+N;j++){
if(j+ob[i]<2*V+N){
k1[j+ob[i]]+=ki[j];
upd(k1[j+ob[i]]);
}
if(j-ob[i]>=0){
k2[j-ob[i]]+=ki[j];
upd(k1[j+ob[i]]);
}
}
for(int j=0;j<2*V+N;j++){
ki[j]=k1[j]+k2[j]-ki[j];
upd(ki[j]);
if(ki[j]<0)
ki[j]+=MOD;
}
}
printf("%d",ki[V+x]);
return 0;
}