Cod sursa(job #468485)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 3 iulie 2010 21:56:40
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#define X 10007
#define nmax 310

int n, k, v[nmax][nmax];

int fact (int x)
{
    int i, p=1;
    for (i=2; i<=x; i++) p=(p*i)%X;
    return p;
}

int main()
{
    freopen("permutari2.in","r",stdin);
    freopen("permutari2.out","w",stdout);
    scanf("%d %d",&n,&k);
    int i, j, c, s;
    v[1][1]=1;
    for (i=2; i<=n; i++)
    {
        v[i][i]=1;
        if (i>1) s=1; else s=0;
        for (j=2; j<i; j++)
        {


            for (c=i-1; c>=j-1; c--)
            {
                v[i][j]=(v[i][j]+v[c][j-1]*v[i-c][1]%X)%X;
            }
                s=(s+v[i][j])%X;
    }
        c=fact(i);
        v[i][1]=c-s;
        if (v[i][1]<0) v[i][1]+=X;
    }
    printf("%d\n",v[n][k]);
}