Pagini recente » Cod sursa (job #2001642) | Cod sursa (job #1233482) | Cod sursa (job #2494595) | Cod sursa (job #1124001) | Cod sursa (job #2246468)
#include<bits/stdc++.h>
#define maxN 305
using namespace std;
long long fact[maxN],n,k;
long long dp[maxN][maxN];
const long long mod=10007LL;
int main()
{
freopen("permutari2.in","r",stdin);
freopen("permutari2.out","w",stdout);
scanf("%lld%lld",&n,&k);
fact[0]=1LL;
for(int i=1;i<=n;i++)
fact[i]=(fact[i-1]*(1LL*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;
}
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,1LL*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("%lld\n",dp[n][k]);
return 0;
}