Pagini recente » Cod sursa (job #1187689) | Cod sursa (job #2893971) | Cod sursa (job #1112614) | Cod sursa (job #245249) | Cod sursa (job #793965)
Cod sursa(job #793965)
#include <cstdio>
#include <cstring>
const int MAX_SIZE(100000);
const int MOD(10000);
const int MAX_VALUE(44100);
int data1 [MAX_SIZE];
int *const v1(data1 + (MAX_SIZE >> 1));
int data2 [MAX_SIZE];
int *const v2(data2 + (MAX_SIZE >> 1));
int n, m, x;
inline void dynamic (void)
{
*v2 = 1;
int i, j, d, p;
for (i = 1 ; i <= n ; ++i)
for (j = 1 ; j <= m ; ++j)
{
p = i * j;
std::memcpy(data1,data2,sizeof(data2));
for (d = MAX_VALUE ; d >= -MAX_VALUE ; --d)
{
v2[d] = v1[d] + v1[d - p] + v1[d + p];
v2[d] %= MOD;
}
}
}
int main (void)
{
std::freopen("diamant.in","r",stdin);
std::freopen("diamant.out","w",stdout);
std::scanf("%d%d%d",&n,&m,&x);
std::fclose(stdin);
if (x > MAX_VALUE)
{
std::printf("0\n");
goto Skip;
}
dynamic();
std::printf("%d\n",v2[x]);
Skip :
std::fclose(stdout);
return 0;
}