Pagini recente » Cod sursa (job #2727452) | Cod sursa (job #1978782) | Cod sursa (job #1116758) | Cod sursa (job #1613334) | Cod sursa (job #893253)
Cod sursa(job #893253)
#include<stdio.h>
int X,M,N,s[2][100000];
int main()
{
freopen("diamant.in","r",stdin);
freopen("diamant.out","w",stdout);
scanf("%d%d%d",&N,&M,&X);
if((X<-N*M*(M+1)*(N+1)/4)||(X>N*M*(M+1)*(N+1)/4))
{
printf("%d",0);
return 0;
}
if((M==1)&&(N==1))
{
printf("%d",1);
return 0;
}
X=X+N*M*(M+1)*(N+1)/4;
s[0][0]=1;
s[0][1]=1;
s[0][2]=1;
for(int i=2;i<=N*M;++i)
{
for(int j=0;j<=X;++j)
{
s[1][j]=s[0][j];
if(j>=((i-1)/M +1)*((i-1)%M+1))
s[1][j]=(s[1][j]+s[0][j-((i-1)/M +1)*((i-1)%M+1)])%10000;
if(j>=2*((i-1)/M +1)*((i-1)%M+1)>=0)
s[1][j]=(s[1][j]+s[0][j-2*((i-1)/M +1)*((i-1)%M+1)])%10000;
//printf("%d %d %d\n",i,j,s[0][j]);
}
for(int j=0;j<=X-1;++j)
{
s[0][j]=s[1][j];
}
}
printf("%d",s[1][X]);
return 0;
}