Pagini recente » Cod sursa (job #1502203) | Cod sursa (job #2942616) | Cod sursa (job #1355737) | Cod sursa (job #3160451) | Cod sursa (job #1219106)
#include <fstream>
#include <iostream>
#define XMAX 80200
#define mod 10000
using namespace std;
int N,M,X,sum,aux, a[2][XMAX*2];
bool l;
int main(){
ifstream in("diamant.in");
ofstream out("diamant.out");
in >> N >> M >> X;
sum = N*M*(N*M+1)/2;
if (X>sum || X<-sum){
out << 0;
return 0;
}
a[0][XMAX]=a[0][XMAX+1]=a[0][XMAX-1]=1;
aux=1;
int i,j,k;
for (j=2; j<=M; j++){
l=!l;
aux+=j;
for (k=-aux; k<=aux; k++){
a[l][XMAX+k]=a[!l][XMAX+k] % mod;
a[l][XMAX+k]=(a[l][XMAX+k]+a[!l][XMAX+k-j]) % mod;
a[l][XMAX+k]=(a[l][XMAX+k]+a[!l][XMAX+k+j]) % mod;
}
}
for (i=2; i<=N; i++)
for (j=1; j<=M; j++){
l=!l;
aux+=i*j;
for (k=-aux; k<=aux; k++){
a[l][XMAX+k]=a[!l][XMAX+k] % mod;
a[l][XMAX+k]=(a[l][XMAX+k]+a[!l][XMAX+k-i*j]) % mod;
a[l][XMAX+k]=(a[l][XMAX+k]+a[!l][XMAX+k+i*j]) % mod;
}
}
out << a[l][XMAX+X];
return 0;
}