Pagini recente » Cod sursa (job #2865497) | Cod sursa (job #3184793) | Cod sursa (job #1446975) | Rating Rares-Andrei Sandru (NighySheen) | Cod sursa (job #466246)
Cod sursa(job #466246)
#include <cstdio>
#define X 10007
#define nmax 310
int n, k, v[nmax][nmax];
int fact (int x)
{
int i, p=1;
for (i=2; i<=x; i++) p=(p*i)%X;
return p;
}
int main()
{
freopen("permutari2.in","r",stdin);
freopen("permutari2.out","w",stdout);
scanf("%d %d",&n,&k);
int i, j, c, s;
v[1][1]=1;
v[2][1]=1;
v[2][2]=1;
v[3][1]=3;
v[3][2]=2;
v[3][3]=1;
for (i=4; i<=n; i++)
{
v[i][i]=1;
if (i>1) s=1; else s=0;
for (j=2; j<i; j++)
{
for (c=i-1; c>=j-1; c--)
{
v[i][j]=(v[i][j]+v[c][j-1]*v[i-c][1]%X)%X;
}
s=(s+v[i][j])%X;
}
c=fact(i);
v[i][1]=c-s;
if (v[i][1]<0) v[i][1]+=X;
}
/*for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++) printf("%d ",v[i][j]);
printf("\n");
}*/
printf("%d\n",v[n][k]);
}