Cod sursa(job #1688006)
| Utilizator | Data | 13 aprilie 2016 10:38:10 | |
|---|---|---|---|
| Problema | Permutari2 | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <cstdio>
using namespace std;
const int Mod=10007;
int N,K,i,k,j;
long long d[305][305];
int main()
{
freopen("permutari2.in", "r", stdin);
freopen("permutari2.out", "w", stdout);
scanf("%d%d", &N, &K);
d[1][1]=d[0][1]=1;
for(i=2; i<=N; ++i)
{
d[1][i]=d[0][i]=d[0][i-1]*i%Mod;
for(j=2; j<=i; ++j)
{
for(k=j-1; k<i; ++k)
d[j][i] += d[j-1][k]*d[1][i-k];
d[j][i]%=Mod;
d[1][i]-=d[j][i];
}
while(d[1][i]<0LL) d[1][i]+=Mod;
}
printf("%lld\n", d[K][N]);
return 0;
}
