Pagini recente » Cod sursa (job #2937985) | Cod sursa (job #3155259) | Cod sursa (job #2277300) | Cod sursa (job #2374154) | Cod sursa (job #752344)
Cod sursa(job #752344)
#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],maxs,sol;
int *D1 = A + 45000,*D2 = B + 45000;
inline void solve () {
if ( S < 0 ) S = -S;
int left = 0,right = 0;
D1[0] = D2[0] = 1;
for ( int i = 1 ; i <= n ; ++i ){
for ( int j = 1 ; j <= m ; ++j ){
int now = i*j;
left -= now; right += now;
for ( int k = left ; k <= right ; ++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 = left ; k <= right ; ++k ){
D1[k] = D2[k];
}
}
}
sol = D1[S];
}
int main () {
fscanf(f,"%d %d %d",&n,&m,&S);
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;
}