Cod sursa(job #466959)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 28 iunie 2010 02:24:03
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <vector>
using namespace std;

#define MOD 10007
#define MAX 330

vector <int> v;
int a[MAX][MAX];
int n, i, j, k;
int K;

int main()
{
    FILE *f = fopen ("permutari2.in","r");
    FILE *g = fopen ("permutari2.out","w");

    fscanf (f,"%d %d", &n,&K);

    v.push_back (1);
    for (i=1; i<=n; ++i)
    {
        j = (v[i-1]*i) % MOD;
        v.push_back (j);
    }

    a[1][1] = 1;
    for (i=2; i<=n; ++i)
    {
        a[i][1] = v[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]) % MOD;
            a[i][1] = (a[i][1] - a[i][j] + MOD) % MOD;
        }
    }

    fprintf(g, "%d\n",a[n][K]);

    fclose(g);
    fclose(f);
    return 0;
}