Cod sursa(job #2511512)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 19 decembrie 2019 10:33:43
Problema Permutari2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int MOD = 1e4+7;

const int N_MAX = 302;

int n, k;

int dp[N_MAX][N_MAX];

long long sum;

int main()
{
    ifstream fin ("permutari2.in");
    ofstream fout ("permutari2.out");
    fin >> n >> k;
    dp[0][0] = 1;
    int fact = 1;
    for(int i = 1; i <= n; i++)
    {
        fact = fact * i % MOD;
        dp[i][1] = fact - 1;
        dp[i][i] = 1;
        for(int j = 2; j < i; j++)
        {
            sum = 0;
            for(int x = 1; x < i; x++)
                sum += dp[i - x][j - 1] * dp[x][1];
            dp[i][j] = sum % MOD;
            dp[i][1] -= dp[i][j];
        }
        dp[i][1] %= MOD;
        if(dp[i][1] < 0)
            dp[i][1] += MOD;
    }
    fout << dp[n][k] << "\n";
    return 0;
}