Cod sursa(job #1899145)

Utilizator hrazvanHarsan Razvan hrazvan Data 2 martie 2017 15:55:26
Problema Permutari2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#define MAXN 300
#define MOD 10007
int d[MAXN + 1][MAXN + 1];

int main(){
  FILE *in = fopen("permutari2.in", "r");
  int n, k, f = 1, r;
  fscanf(in, "%d%d", &n, &k);
  fclose(in);
  int i, j, p;
  d[1][1] = 1;
  for(i = 2; i <= n; i++){
    f = f * i % MOD;
    r = 0;
    for(j = 2; j <= i; j++){
      for(p = 1; p < i; p++){
        d[i][j] += d[p][1] * d[i - p][j - 1] % MOD;
        if(d[i][j] >= MOD)
          d[i][j] -= MOD;
      }
      r += d[i][j];
      if(r >= MOD)
        r -= MOD;
    }
    d[i][1] = (f - r + MOD) % MOD;
  }
  FILE *out = fopen("permutari2.out", "w");
  fprintf(out, "%d", d[n][k]);
  fclose(out);
  return 0;
}