Cod sursa(job #468192)

Utilizator irene_mFMI Irina Iancu irene_m Data 2 iulie 2010 16:27:03
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#define infile "permutari2.in"
#define outfile "permutari2.out"
#define MaxN 324
#define MOD 10007

int N,K;
int f[MaxN],sol[MaxN][MaxN];
int v[MaxN];

void solve()
{
      int i,j,l;
      f[1]=1;
      for(i=2;i<=N;i++)
            f[i]=(f[i-1]*i)%MOD;

      v[1]=v[2]=1;
      for(i=3;i<=N;i++)
      {
            v[i]=f[i];
            for(j=1;j<i;j++)
                  v[i]=(v[i]-(f[j]*v[i-j])%MOD+MOD)%MOD;
      }


      sol[0][0]=1;
      for(i=0;i<N;i++)
            for(j=0;j<K;j++)
                  if(sol[i][j])
                        for(l=i+1;l<=N;l++)
                              sol[l][j+1]=(sol[l][j+1]+sol[i][j]*v[l-i])%MOD;
}

int main()
{
      freopen(infile,"r",stdin);
      freopen(outfile,"w",stdout);

      scanf("%d%d",&N,&K);
      solve();
      printf("%d\n",sol[N][K]);

      /*for(int i=1;i<=N;i++)
      {
            for(int j=1;j<=K;j++)
                  printf("%d ",sol[i][j]);

            printf("\n");
      }*/

      fclose(stdin);
      fclose(stdout);
      return 0;
}