Pagini recente » Cod sursa (job #531008) | Cod sursa (job #1650289) | Cod sursa (job #201886) | Cod sursa (job #311877) | Cod sursa (job #752214)
Cod sursa(job #752214)
#include<stdio.h>
FILE*f=fopen("diamant.in","r");
FILE*g=fopen("diamant.out","w");
const int mod = 10000;
int n,m,S,A[90000],B[90000],sol;
int *D1 = A + 45000,*D2 = B + 45000;
inline void solve () {
D1[0] = D2[0] = 1;
for ( int i = 1 ; i <= n ; ++i ){
for ( int j = 1 ; j <= m ; ++j ){
int now = i*j;
for ( int k = -S ; k <= S ; ++k ){
D2[k] += D1[k-now];
if ( D2[k] >= mod ) D2[k] -= mod;
D2[k] += D1[k+now];
if ( D2[k] >= mod ) D2[k] -= mod;
}
for ( int k = -S ; k <= S ; ++k ){
D1[k] = D2[k];
}
}
}
sol = D1[S];
}
int main () {
fscanf(f,"%d %d %d",&n,&m,&S);
int maxs = 0;
for ( int i = 1 ; i <= n ; ++i ){
for ( int j = 1 ; j <= m ; ++j ){
maxs += i*j;
}
}
if ( -maxs <= S && S <= maxs ){
solve();
}
fprintf(g,"%d\n",sol);
fclose(f);
fclose(g);
return 0;
}