Pagini recente » Cod sursa (job #669902) | Cod sursa (job #164723) | Cod sursa (job #1975854) | Cod sursa (job #2393401) | Cod sursa (job #466108)
Cod sursa(job #466108)
#include <stdio.h>
#define NMAX 105
#define MOD 10007
int n,k,A[NMAX][NMAX][NMAX];
void precompute()
{
A[1][1][1]=1;
int i,j,t,p;
for (i=2; i<=n; i++)
A[1][i][0]=1;
for (i=1; i<n; i++)
{
for (t=0; t<=i; t++)
{
A[i+1][i+1][t+1]+=A[i][i][t]; //j=i
if (A[i+1][i+1][t+1]>=MOD)
A[i+1][i+1][t+1]-=MOD;
A[i+1][i+1][t+1]+=A[i][i+1][t];//j=i+1
if (A[i+1][i+1][t+1]>=MOD)
A[i+1][i+1][t+1]-=MOD;
for (j=i+2; j<=n; j++)
{
A[i+1][j][t]+=A[i][j][t]*(j-i);
if (A[i+1][j][t]>=MOD)
A[i+1][j][t]%=MOD;
}//pana aici maximul ramane ac
//de aici se mareste
for (p=i+2; p<=n; p++)
{
A[i+1][p][t]+=A[i][i][t];
if (A[i+1][p][t]>=MOD)
A[i+1][p][t]-=MOD;
}
for (j=i+1; j<=n; j++)
{
for (p=j+1; p<=n; p++)
{
A[i+1][p][t]+=A[i][j][t];
if (A[i+1][p][t]>=MOD)
A[i+1][p][t]-=MOD;
}
}
}
}
}
int main()
{
freopen("permutari2.in","r",stdin);
freopen("permutari2.out","w",stdout);
scanf("%d%d",&n,&k);
precompute();
printf("%d\n",A[n][n][k]);
return 0;
}