Pagini recente » Cod sursa (job #374217) | Cod sursa (job #468064) | placinta | Cod sursa (job #705436) | Cod sursa (job #514914)
Cod sursa(job #514914)
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
const int N=22, MOD=10000;
int n, m, x, mx, c[N], d[N];
#define a (c+10)
#define b (d+10)
int main()
{
in >> n >> m >> x;
mx=n*m*(n+1)*(m+1)/4;
if(x>mx || x<-mx)
{
out << "0" << "\n";
return 0;
}
a[0]=1;
for( int i=1; i<=n; ++i)
for( int j=1; j<=m; ++j)
{
memset( d, 0, sizeof(d));
b[-i*j]=b[i*j]=b[0]=a[0];
for( int k=1; k<=mx; ++k)
{
if(a[-k])
{
b[-k]=(b[-k]+a[-k])%MOD;
b[-k+i*j]=(b[-k+i*j]+a[-k])%MOD;
if(-k-i*j>=-mx)
b[-k-i*j]=(b[-k-i*j]+a[-k])%MOD;
}
if(a[k])
{
b[k]=(b[k]+a[k])%MOD;
b[k-i*j]=(b[k-i*j]+a[k])%MOD;
if(k+i*j<=mx)
b[k+i*j]=(b[k+i*j]+a[+k])%MOD;
}
}
memcpy( c, d, sizeof(d));
}
out << a[x] << "\n";
return 0;
}