Pagini recente » Cod sursa (job #157208) | Rating dreptate loredana (loredana) | Cod sursa (job #2051038) | Cod sursa (job #770371) | Cod sursa (job #35014)
Cod sursa(job #35014)
#include <stdio.h>
#define dim 4410//1
int N, M, K;
int A[dim], C[dim];
long X, S, Max;
int main()
{
freopen("diamant.in", "r", stdin);
freopen("diamant.out", "w", stdout);
scanf("%d %d %d", &N, &M, &X);
X *= X < 0 ? -1 : 1;
int i, j;
for(i=1; i<=N; ++i)
for(j=1; j<=M; ++j)
{
A[++K] = i * j;
S += i * j;
}
if( X > S )
printf("0");
else
{
for(i=1; i<K; ++i)
for(j=i+1; j<=K; ++j)
if( A[i] > A[j] )
A[i] ^= A[j] ^= A[i] ^= A[j];
Max = 0;
C[0] = 1;
for(i=1; i<=K; ++i)
{
for(j=Max; j>=0; --j)
if( C[j] )
{
if( j + A[i] <= X )
{
C[j+A[i]] += C[j];
C[j+A[i]] -= C[j+A[i]] >= 10000 ? 10000 : 0;
if( j + A[i] > Max )
Max = j + A[i];
}
if( j - A[i] >= 1 )
{
C[j-A[i]] += C[j];
C[j-A[i]] -= C[j-A[i]] >= 10000 ? 10000 : 0;
}
}
}
}
printf("%d", C[X]);
fclose(stdin);
fclose(stdout);
return 0;
}