Pagini recente » Cod sursa (job #476021) | Cod sursa (job #1472644) | Cod sursa (job #676965) | Cod sursa (job #1453049) | Cod sursa (job #7574)
Cod sursa(job #7574)
#include <cstdio>
using namespace std;
const char iname[] = "1-sir.in";
const char oname[] = "1-sir.out";
#define MAX_N 77
#define lim MAX_N * MAX_N
#define modulo 194767
int cnt[2][MAX_N * MAX_N * 2][MAX_N * 2];
int main(void) {
freopen(iname, "r", stdin);
freopen(oname, "w", stdout);
int N;
int S;
scanf("%d %d", & N, & S);
if ((2 * S > N * (N - 1)) || (2 * S < - N * (N - 1))) {
printf("0\n");
return 0;
}
if ((N & 1) && (S & 1)) {
printf("0\n");
return 0;
}
if ((N % 2 == 0) && (S % 2 == 0)) {
printf("0\n");
return 0;
}
int step = 0;
cnt[step][lim][MAX_N] = 1;
for (int i = step = 1; i < N; ++i) {
int li = -i*(i+1)/2;
int ls = +i*(i+1)/2;
for (int j = li; j <= ls; ++j)
for (int k = -i; k <= +i; ++k)
cnt[step][j + lim][k + MAX_N] = (cnt[1 ^ step][j - k + lim][k - 1 + MAX_N] +
cnt[1 ^ step][j - k + lim][k + 1 + MAX_N]) % modulo;
step ^= 1;
}
int Res = 0;
for (int k = -N + 1; k < N; ++k)
Res = (Res + cnt[1 ^ step][S + lim][k + MAX_N]) % modulo;
printf("%d\n", Res);
return 0;
}