Pagini recente » Cod sursa (job #2554678) | Cod sursa (job #1740388) | Cod sursa (job #1201674) | Cod sursa (job #3193121) | Cod sursa (job #2246473)
#include<bits/stdc++.h>
#define maxN 305
using namespace std;
int fact[maxN];
int n,k;
int dp[maxN][maxN];
const int mod=10007LL;
int main()
{
freopen("permutari2.in","r",stdin);
freopen("permutari2.out","w",stdout);
scanf("%d%d",&n,&k);
fact[0]=1LL;
for(int i=1;i<=n;i++)
fact[i]=(fact[i-1]*i)%mod;
for(int i=1;i<=n;i++)
{
dp[i][1]=fact[i];
for(int j=i-1;j>=1;j--)
{
// dp[i][1]+=mod*mod;
dp[i][1]=(dp[i][1]-dp[j][1]*fact[i-j])%mod;
}
dp[i][1]+=mod;
// while(dp[i][1]<0) dp[i][1]+=mod;
dp[i][1]%=mod;
}
for(int i=1;i<=n;i++)
{
for(int j=2;j<=min(k,i);j++)
for(int t=1;(i-t)>=(j-1);t++)
dp[i][j]=(dp[i][j]+dp[i-t][j-1]*dp[t][1])%mod;
}
printf("%d\n",dp[n][k]);
return 0;
}