Pagini recente » Cod sursa (job #2718918) | Cod sursa (job #1893648) | Cod sursa (job #2253035) | Cod sursa (job #2573990) | Cod sursa (job #752264)
Cod sursa(job #752264)
#include <fstream>
#include <cstring>
using namespace std;
const char InFile[]="diamant.in";
const char OutFile[]="diamant.out";
const int MaxS=401*401;
const int MOD=10000;
ifstream fin(InFile);
ofstream fout(OutFile);
int N,M,K,SMAX,buffer1[MaxS],buffer2[MaxS];
int *line1=buffer1,*line2=buffer2;
inline int myabs(const int &x)
{
if(x<0)
{
return -x;
}
return x;
}
int main()
{
fin>>N>>M>>K;
fin.close();
for(register int i=1;i<=N;++i)
{
for(register int j=1;j<=M;++j)
{
SMAX+=i*j;
}
}
if(-SMAX<=K && K<=SMAX)
{
line1[0]=1;
for(register int i=1;i<=N;++i)
{
for(register int j=1;j<=M;++j)
{
int curr=i*j;
for(register int k=0;k<=SMAX;++k)
{
if(k+curr<=SMAX)
{
line2[k]+=line1[k+curr];
}
line2[k]+=line1[k];
if(myabs(k-curr)<=SMAX)
{
line2[k]+=line1[myabs(k-curr)];
}
line2[k]%=MOD;
}
swap(line1,line2);
memset(line2,0,sizeof(int)*MaxS);
}
}
fout<<line1[myabs(K)];
}
else
{
fout<<"0";
}
fout.close();
return 0;
}