Pagini recente » Cod sursa (job #269575) | Cod sursa (job #2803934) | Cod sursa (job #1439386) | Cod sursa (job #1257870) | Cod sursa (job #2828073)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("permutari2.in");
ofstream fout("permutari2.out");
const int mod=10007;
int n,k;
int fact[305];
long long dp[305][305];
/// dp[i][j] = cate permutari de ordin i p au s(p)=j
/// dp[i][j] = (dp[x][j-1]*dp[i-x][1],x=j-1...i-1)
/// 1 2 2
/// 2 1 1
int main()
{
fin>>n>>k;
dp[1][1]=dp[2][1]=dp[2][2]=1;
fact[1]=1;
for(int i=2; i<=n; i++)
fact[i]=i*fact[i-1]%mod;
for(int i=3; i<=n; i++)
{
dp[i][1]=(fact[i]-1+mod)%mod;
dp[i][i]=1;
for(int j=2; j<i; j++)
{
for(int x=j-1; x<i; x++)
dp[i][j]+=dp[x][j-1]*dp[i-x][1];
dp[i][j]%=mod;
dp[i][1]=(dp[i][1]-dp[i][j]+mod)%mod;
}
}
fout<<dp[n][k]<<"\n";
return 0;
}