Pagini recente » Cod sursa (job #3258113) | Cod sursa (job #1843939) | Cod sursa (job #1396164) | Cod sursa (job #233565) | Cod sursa (job #42028)
Cod sursa(job #42028)
#include <cstdio>
#include <string>
#define maxn 50
#define maxt maxn*maxn/2
int a[2*maxn*maxn+1][2*maxn+1], b[2*maxn*maxn+1][2*maxn+1];
int n, s;
int r=32640;
int p=256;
void citire()
{
freopen("1-sir.in", "r", stdin);
scanf("%d %d", &n, &s);
r=n*n/2+1;
p=n+1;
}
void calcul()
{
int i, j, k;
for(i=0;i<maxn*maxn;i++)
for(j=0;j<2*maxn-1;j++) a[i][j]=b[i][j]=0;
a[1+maxt][1+maxn]=1;
a[-1+maxt][-1+maxn]=1;
//printf("%d\n", a[1+maxt][1+maxn]);
for(i=3;i<=n;i++)
{
int y=i*i/2;
int z=-y;
{ for(j=z;j<=y;j++)
for(k=-i;k<=i;k++)
{
//printf("%d %d\n", j, k);
b[j+maxt][k+maxn]=a[j-k+maxt][k-1+maxn]+a[j-k+maxt][k+1+maxn], b[j+maxt][k+maxn]%=194767;
}
}
// memcpy(a, b, sizeof(b));
for(k=z;k<=y;k++)
for(int t=-i;t<=i;t++) a[k+maxt][t+maxn]=b[k+maxt][t+maxn];
}
int sum=0;
for(i=-n;i<=n;i++)sum+=a[s+maxt][i+maxn], sum%=194767;
freopen("1-sir.out", "w", stdout);
printf("%d\n", sum);
}
int main()
{
citire();
calcul();
return 0;
}