Pagini recente » Cod sursa (job #1489487) | Monitorul de evaluare | Cod sursa (job #17628) | Cod sursa (job #2015484) | Cod sursa (job #1151814)
#include <cstdio>
#define MOD 10007
#define Nmax 305
using namespace std;
int dp[Nmax][Nmax],t[Nmax],N,K,f[Nmax];
inline int Modulo(int x)
{
while(x>=MOD)
x-=MOD;
return x;
}
int main()
{
int i,j,k;
freopen ("permutari2.in","r",stdin);
freopen ("permutari2.out","w",stdout);
scanf("%d%d", &N,&K);
f[0]=1;
for(i=1;i<=N;++i)
f[i]=Modulo(f[i-1]*i);
for(i=1;i<=N;++i)
{
t[i]=f[i];
for(j=1;j<i;++j)
{
t[i]-=Modulo(t[j]*f[i-j]);
if(t[i]<0)
t[i]+=MOD;
}
}
for(i=1;i<=N;++i)
dp[i][1]=t[i];
for(i=1;i<=N;++i)
for(j=2;j<=i;++j)
for(k=j-1;k<i;++k)
dp[i][j]=Modulo(dp[i][j]+dp[k][j-1]*dp[i-k][1]);
printf("%d\n", dp[N][K]);
return 0;
}