Pagini recente » Cod sursa (job #3162717) | Cod sursa (job #2598631) | Cod sursa (job #2839273) | Cod sursa (job #736223) | Cod sursa (job #35104)
Cod sursa(job #35104)
#include <stdio.h>
#define MAX 45002
#define MOD 10000
int n, m, x, nr_a, s_max, aux;
int a[402];
int c[2][MAX], c1[2][MAX];
void citire ();
void dinamica ();
void afisare ();
inline int abs ( int i )
{
if ( i < 0 )
return -i;
return i;
}
int main ()
{
freopen ( "diamant.in", "r", stdin );
freopen ( "diamant.out", "w", stdout );
citire ();
dinamica ();
return 0;
}
void citire ()
{
int i, j;
scanf ( "%d %d %d", &n, &m, &x );
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= m; j++ )
{
a[++nr_a] = i * j;
s_max += i * j;
}
}
void dinamica ()
{
int i, j, l0, l1, aux1;
// for ( i = 0; i <= 10; i++ )
// printf ( "%d ", c[0][i] );
l0 = 0;
l1 = 1;
// c[l0][0] = 1;
for ( i = 1; i <= nr_a; i++ )
{
// for ( j = 0; j <= s_max; j++ )
// c[l1][j] = 0;
/* for ( j = 45000; j >= -45000; j-- )
c[l1][abs(j)] += c[l0][abs(j - a[i])] + c[l0][abs(j + a[i])];
*/
for ( j = 0; j <= s_max; j++ )
c[l1][j + a[i]] = (c[l1][j + a[i]] + c[l0][j]) % MOD;
for ( j = -s_max; j <= 0; j++ )
c[l1][abs(j + a[i])] = ( c[l1][abs(j + a[i])] + c[l0][-j]) % MOD;
c[l1][a[i]] = (c[l1][a[i]] + 1) %MOD;
for ( j = 0; j <= s_max; j++ )
// c[l1][j] = (c[l1][j] + c[l0][j]) % 10000;
if ( c[l0][j] > c[l1][j] )
c[l1][j] = c[l0][j] % MOD;
else
c[l0][j] = c[l1][j] % MOD;
aux = l1;
l0 = !l0;
l1 = !l1;
}
// for ( i = 1; i <= s_max; i++ )
// printf ( "%d ", c[aux][i] );
printf ( "%d", c[aux][x] );
}