Pagini recente » Cod sursa (job #863851) | Cod sursa (job #289708) | Cod sursa (job #2624167) | Cod sursa (job #1185821) | Cod sursa (job #2516426)
#include <iostream>
#include<cstdio>
using namespace std;
const short int N=305;
short int dp[N][N];
const short int MOD=10007;
short int mult(short int a,short int b){
return a*b%MOD;
}
short int ad(short int a,short int b){
return (a+b)%MOD;
}
long long s;
int main()
{
freopen("permutari2.in","r",stdin);
freopen("permutari2.out","w",stdout);
short int n,k;
cin>>n>>k;
short int fact=1;
for(short int i=1;i<=n;i++){
fact=mult(fact,i);
dp[i][1]=fact-1;
dp[i][i]=1;
for(short int j=2;j<i;j++){
s=0;
for(short int x=1;x<i;x++){
s+=dp[i-x][j-1]*dp[x][1];
}
s%=MOD;
dp[i][j]=s;
dp[i][1]-=dp[i][j];
}
dp[i][1]%=MOD;
while(dp[i][1]<0)
dp[i][1]+=MOD;
}
cout<<dp[n][k];
return 0;
}