Cod sursa(job #1474198)

Utilizator AlexNiuclaeNiculae Alexandru Vlad AlexNiuclae Data 21 august 2015 13:58:59
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

using namespace std;

const int Nmax = 310;
const int MOD = 10007;

int n , K , i , j , k , fact;
int dp[Nmax][Nmax];

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

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

    dp[1][1] = 1; fact = 1;
    for (i = 2; i <= n; ++i)
    {
        fact = (fact * i) % MOD;
        dp[i][1] = fact;
        for (j = 2; j <= i; ++j)
        {
            long long x = 0;
            for (k = j - 1; k < i; ++k)
                x += dp[k][j-1] * dp[i-k][1];
            dp[i][j] = x % MOD;

            dp[i][1] = (dp[i][1] - dp[i][j] + MOD) % MOD;
        }
    }

    printf("%d\n", dp[n][K]);

    return 0;
}