Pagini recente » Cod sursa (job #2461403) | Cod sursa (job #575370) | Cod sursa (job #2404623) | Cod sursa (job #2594454) | Cod sursa (job #2178699)
#include <bits/stdc++.h>
using namespace std;
int DP[2][100010];
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int N,M,X;
const int lim = 45000;
inline int eval(int val){
if (val < 0) return lim - val;
else return val;
}
int main(){
fin >> N >> M >> X;
bool u = 1;
DP[!u][0] = 1;
if (abs(X) > lim) {
fout << 0;
return 0;
}
for (int i = 1; i <= N;i++){
for (int j = 1; j <= M;j++,u = !u){
for (int k = lim; k >= -lim;k--) DP[u][eval(k)] = DP[!u][eval(k - i*j)] + DP[!u][eval(k)] + DP[!u][eval(k + i*j)], DP[u][eval(k)] = DP[u][eval(k)] % 10000;
// for (int k = lim; k >= -lim;k--) cout <<k<< "-"<< DP[!u][k] << " ";
// cout << endl;
// for (int k = lim; k >= -lim;k--) cout <<k<< "-"<< DP[u][k] << " ";
// cout << endl;
// cout << endl;
}
}
fout << DP[!u][eval(X)] % 10000;
//cout << DP[u][X];
return 0;
}