Cod sursa(job #466279)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 26 iunie 2010 12:45:37
Problema Permutari2 Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 0.79 kb
#include <cstdio>

#define FIN "permutari2.in"
#define FOUT "permutari2.out"

#define MOD 10007
#define NMAX 309

int N, K, S;
int D[NMAX][NMAX];

int fact(int X)
{
    int i, P;

    for (i = P = 1; i <= X; ++ i)
        P = P * i % MOD;

    return P;
}

int main()
{
    int i, j, l;

    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

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

    D[0][0] = 1;

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


    for (i = K - 1, S = 0; i < N; ++ i)
        S = (S + D[K - 1][i] * fact(N - i - 1)) % MOD;

    S = (S + D[K][N]) % MOD;

    printf("%d\n", S);
}