Cod sursa(job #2516425)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 31 decembrie 2019 14:28:52
Problema Permutari2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#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;
  scanf("%u%u",&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;
  }
  printf("%u",dp[n][k]);
  return 0;
}