Cod sursa(job #2514222)

Utilizator ArdeleanOficialAlexandru ArdeleanOficial Data 24 decembrie 2019 20:46:55
Problema Permutari2 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("permutari2.in");
ofstream fout("permutari2.out");

const int N = 305, MOD = 10007;

int dp[N][N];
int fact[N];

int main()
{
    int n, k;
    fin >> n >> k;
    fact[0] = 1;
    for (int i = 1; i <= n; ++i)
        fact[i] = fact[i - 1] * i % MOD;
    for (int i = 1; i <= n; ++i) {
        dp[1][i] = fact[i];
        for (int j = 1; j < i; ++j)
            dp[1][i] = (dp[1][i] - dp[1][j] * fact[i - j] + MOD * MOD) % MOD;
    }
    dp[1][1] = 1;
    for (int i = 1; i <= n; ++i)
        for (int j = 2; j <= k && j <= i; ++j)
            for (int k = 1; k <= i && j - 1 <= i - k; ++k)
                dp[j][i] = (dp[j][i] + dp[1][k] * dp[j - 1][i - k]) % MOD;
    fout << dp[k][n];
    return 0;
}