Cod sursa(job #466368)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 26 iunie 2010 13:18:08
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 0.67 kb
#include <stdio.h>
#define MODULO 10007
#define MAXN 305

int a[MAXN][MAXN];
int i,j,k,K,N;
int P[MAXN];

int main()
{
    freopen("permutari2.in","r",stdin);
    freopen("permutari2.out","w",stdout);

    scanf("%d %d",&N,&K);

    P[0] = 1;
    for (i=1; i<=N; ++i)
        P[i] = (P[i-1]*i) % MODULO;

    a[1][1] = 1;
    for (i=2; i<=N; ++i){
        a[i][1] = P[i];
        for (j=2; j<=N && j<=i; ++j){
            a[i][j] = 0;
            for (k=j-1; k<=i; ++k)
                a[i][j] = (a[i][j] + a[k][j-1]*a[i-k][1]) % MODULO;
            a[i][1] = (a[i][1] - a[i][j]+MODULO) % MODULO;
        }
    }

    printf("%d\n",a[N][K]);
    return 0;
}