Pagini recente » Borderou de evaluare (job #1010708) | Cod sursa (job #2294478) | Cod sursa (job #413996) | Cod sursa (job #3173523) | Cod sursa (job #2515462)
#include<fstream>
using namespace std;
const int MOD=10007;
const int NMAX=305;
int dp[NMAX][NMAX],perm[NMAX];
int main(){
ifstream fin("permutari2.in");
ofstream fout("permutari2.out");
int n,m;
fin>>n>>m;
perm[1]=1;
for(int i=2;i<=n;i++)
perm[i]=(perm[i-1]*i)%MOD;
dp[1][1]=1;
for(int i=2;i<=n;i++){
int sum=0;
for(int j=2;j<=n;j++){
for(int k=i-1;k>=j-1;k--){
dp[i][j]+=(dp[k][j-1]*dp[i-k][1])%MOD;
dp[i][j]%=MOD;
}
sum=(sum+dp[i][j])%MOD;
}
dp[i][1]=(perm[i]-sum+MOD)%MOD;
}
fout<<dp[n][m];
return 0;
}