Pagini recente » Cod sursa (job #2247360) | Cod sursa (job #1215456) | Cod sursa (job #2199526) | Cod sursa (job #2968388) | Cod sursa (job #926372)
Cod sursa(job #926372)
#include <fstream>
#include <stdlib.h>
using namespace std;
fstream f("diamant.in",ios::in);
fstream g("diamant.out",ios::out);
int a1[44102],a2[44102],b1[44102],b2[44102],x[402],n,m,i,j,nr,k,nrcazuri,rezultat;
long long t,xmaxim;
int main()
{
f>>n>>m>>t;
xmaxim=n*(n+1)/2*m*(m+1)/2;
if ((t>xmaxim)||(t<-xmaxim))
{
g<<"0";
return 0;
}
nr=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
nr++;
x[nr]=i*j;
}
a1[0]=1;
k=1;
nrcazuri=0;
while (k<=nr)
{
for (i=0;i<=xmaxim;i++)
{
if (a1[i]!=0)
{
b1[i]=(b1[i]+a1[i])%10000;
rezultat=i+x[k];
if (rezultat>=0) b1[rezultat]=(b1[rezultat]+a1[i])%10000;
if (rezultat<0) b2[abs(rezultat)]=(b2[abs(rezultat)]+a1[i])%10000;
rezultat=i-x[k];
if (rezultat>=0) b1[rezultat]=(b1[rezultat]+a1[i])%10000;
if (rezultat<0) b2[abs(rezultat)]=(b2[abs(rezultat)]+a1[i])%10000;
}
}
for (i=1;i<=xmaxim;i++)
{
if (a2[i]!=0)
{
b2[i]=(b2[i]+a2[i])%10000;
rezultat=-i+x[k];
if (rezultat>=0) b1[rezultat]=(b1[rezultat]+a2[i])%10000;
if (rezultat<0) b2[abs(rezultat)]=(b2[abs(rezultat)]+a2[i])%10000;
rezultat=-i-x[k];
if (rezultat>=0) b1[rezultat]=(b1[rezultat]+a2[i])%10000;
if (rezultat<0) b2[abs(rezultat)]=(b2[abs(rezultat)]+a2[i])%10000;
}
}
if (k==nr)
{
if (t>=0) nrcazuri=b1[t];
else nrcazuri=b2[abs(t)];
}
for (i=0;i<=xmaxim;i++)
{
a1[i]=b1[i];
b1[i]=0;
}
for (i=1;i<=xmaxim;i++)
{
a2[i]=b2[i];
b2[i]=0;
}
k++;
}
g<<nrcazuri;
f.close();g.close();
return 0;
}