Pagini recente » Cod sursa (job #1549410) | Cod sursa (job #648467) | Cod sursa (job #983123) | Cod sursa (job #765117) | Cod sursa (job #923395)
Cod sursa(job #923395)
#include<fstream>
using namespace std;
ifstream in("diamant.in");
ofstream out("diamant.out");
const int MOD = 10000;
int d[44101],*nr;
int v[401];
int ad[44101],*adaugat;
int sc[44101],*scazut;
int main()
{
int n,m,x,u=0,i,j;
in >> n >> m >> x;
nr = d + 22050;
adaugat = ad + 22050;
scazut = sc + 22050;
if(x>44101 || x<-44101)
{
out<<"0\n";
return 0;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
v[++u]=i*j;
//suma+=v[u];
}
int dr=0,st=0;
nr[0]=1;
for(i=1;i<=n*m;i++)
{
for(j=dr;j>=st;--j)
adaugat[j+v[i]] = nr[j];
for(j=st;j<=dr;++j)
scazut[j-v[i]] = nr[j];
st-=v[i];
dr+=v[i];
for(j=st;j<=dr;j++)
{
nr[j] += (adaugat[j] + scazut[j])%MOD;
nr[j] %= MOD;
adaugat[j] = scazut[j] = 0;
}
}
out<<nr[x]<<"\n";
return 0;
}