Pagini recente » Cod sursa (job #1048726) | Cod sursa (job #2960862) | Cod sursa (job #2127591) | Cod sursa (job #1625075) | Cod sursa (job #341335)
Cod sursa(job #341335)
#include <stdio.h>
#include <string.h>
#define N 21
#define P 1<<17
#define NR 10000
int n,m,x;
int v[N*N],r,sum;
int comb[P],comb2[P];
char marc[P],marc2[P];
void matrice()
{
int i,j;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
v[++r]=i*j;
sum+=i*j;
}
}
void dinamica()
{
int i,j;
marc[sum]=1;
comb[sum]=1;
for (i=1; i<=r; i++)
{
memcpy(marc2,marc,sizeof(marc));
memcpy(comb2,comb,sizeof(comb));
for (j=-sum; j<=sum; j++)
if (marc2[j+sum])
{
marc[j+sum-v[i]]=1;
marc[j+sum+v[i]]=1;
comb[j+sum-v[i]]+=comb2[j+sum];
comb[j+sum+v[i]]+=comb2[j+sum];
if (comb[j+sum-v[i]]>NR)
comb[j+sum-v[i]]%=NR;
if (comb[j+sum+v[i]]>NR)
comb[j+sum+v[i]]%=NR;
//comb[j+sum]++;
}
}
printf("%d\n",comb[x+sum]);
}
int main()
{
freopen("diamant.in","r",stdin);
freopen("diamant.out","w",stdout);
scanf("%d%d%d",&n,&m,&x);
matrice();
dinamica();
return 0;
}