Pagini recente » Cod sursa (job #2027085) | Cod sursa (job #1835294) | Cod sursa (job #2034701) | Cod sursa (job #1769157) | Cod sursa (job #48854)
Cod sursa(job #48854)
#include <stdio.h>
#include <fstream>
#include <vector>
#include <map>
using namespace std;
#define in "diamant.in"
#define out "diamant.out"
#define dim 44101
vector<int> V;
int A[2][2*dim+1], C[dim]; // A[i] = numarul de a forma i
int P[2*dim+1], Nr[2][2*dim+1];
int N, M, X, Y;
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d%d", &N, &M, &X);
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= M; j++ )
{
V.push_back(i*j), V.push_back(2*i*j);
}
if ( X > 0 ) Y = X;
else Y = -X;
A[0][0] = 1;
for ( int i = 0; i < V.size(); i++ )
{
for ( int j = 0; j <= 2*Y; j++ )
{
if ( A[0][j] == 1 )
{
A[1][j+V[i]] = 1;
Nr[1][j+V[i]] = ( Nr[1][j+V[i]] + 1) % 10000;
}
}
for ( int k = 1; k <= 2*Y; k++ )
{
if ( A[1][k] == 1 )
{
A[0][k] = A[1][k];
Nr[0][k] = Nr[1][k] % 10000;
}
}
}
/* for ( int i = 0; i <= 1; i++, printf("\n") )
for ( int j = 0; j <= 2*Y; j++ )
printf("%d ", A[i][j] );*/
if ( X > 0 ) printf("%d", Nr[1][2*X] % 10000 );
else printf("%d", Nr[1][Y] % 10000 );
}