Mai intai trebuie sa te autentifici.
Cod sursa(job #1321456)
| Utilizator | Data | 19 ianuarie 2015 10:17:50 | |
|---|---|---|---|
| Problema | Diamant | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<stdio.h>
#include<string.h>
#define a(i) ((i>=0)?(ap[i]):(an[-(i)]))
#define b(i) ((i>=0)?(bp[i]):(bn[-(i)]))
int n,m,x,li,ls,i,j,k,ap[50537],an[50537],bp[50537],bn[50537];
int main()
{
freopen("diamant.in","r",stdin);
freopen("diamant.out","w",stdout);
scanf("%d%d%d",&n,&m,&x);
li=0;ls=0;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{li-=(i*j);ls+=(i*j);}
if(x>ls||x<li){printf("0\n");return 0;}
ap[0]=1;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{memcpy(bn,an,sizeof(an));
memcpy(bp,ap,sizeof(ap));
for(k=ls;k>=li;--k)
a(k)=b(k-(i*j))+b(k)+b(k+(i*j)),a(k)%=10000;}
printf("%d\n",a(x));
return 0;
}
