Pagini recente » Cod sursa (job #551057) | Cod sursa (job #37548) | Cod sursa (job #3124295) | Cod sursa (job #351506) | Cod sursa (job #2401031)
#include <iostream>
#include <fstream>
using namespace std;
const int nmax=305;
const int mod=10007;
int fact[nmax],sol[nmax];
int dp[nmax][nmax],c[nmax][nmax];
int n,k,i,j,ind;
void prc()
{
fact[0]=1;
for(i=1;i<=n;i++)
fact[i]=(fact[i-1]*i)%mod;
for(i=0;i<=n;i++)
for(j=0;j<=i;j++)
{
if(!j) c[i][j]=1;
else c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
}
int main()
{
ifstream f("permutari2.in");
ofstream g("permutari2.out");
f>>n>>k;
prc();
dp[0][0]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
for(ind=0;ind<j;ind++)
{
dp[i][j]=(dp[i][j]+dp[i-1][ind]*fact[j-ind])%mod;
}
sol[i]=dp[i][n];
}
for(i=n;i>=k;i--)
for(j=i+1;j<=n;j++)
{
sol[i]=(sol[i]-sol[j]*c[j-1][i-1])%mod;
if(sol[i]<0)
sol[i]+=mod;
}
g<<sol[k];
return 0;
}