Pagini recente » Cod sursa (job #1828794) | Cod sursa (job #21236) | Cod sursa (job #591184) | Cod sursa (job #3219262) | Cod sursa (job #2032645)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("diamant.in");
ofstream out ("diamant.out");
int const nmax = 20;
int const valmax = nmax * nmax;
int const modulo = 10000;
int const totalsum = valmax * valmax;
int dp[5 + valmax + totalsum * 2];
int dp2[5 + valmax + totalsum * 2];
#define dp (dp + totalsum)
#define dp2 (dp2 + totalsum)
int main()
{
int n , m , x;
in>>n>>m>>x;
dp[0] = 1;
int summax = 0, summin = 0;
for(int i = 1 ; i <= n ;i++){
for(int j = 1 ; j <= m ;j++){
int sum = i * j;
for(int t = summin ;t <= summax ;t++){
dp2[t] += dp[t];
if(modulo <= dp2[t])
dp2[t] -= modulo;
if(0 < dp[t]){
dp2[t - sum] += dp[t];
if(modulo <= dp2[t - sum])
dp2[t - sum] -= modulo;
dp2[t + sum] += dp[t];
if(modulo <= dp2[t + sum])
dp2[t + sum] -= modulo;
}
}
summin -= sum;
summax += sum;
for(int t = summin ;t <= summax ;t++){
dp[t] = dp2[t];
dp2[t] = 0;
}
}
}
out<<dp[x];
return 0;
}