Pagini recente » soldiers | Cod sursa (job #3175300) | Cod sursa (job #3208440) | Monitorul de evaluare | Cod sursa (job #2538890)
#include <fstream>
using namespace std;
int N,M,K,i,j,k,x;
long long d[100][12][100];
long long comb(long long n, long long k)
{
int i;
long long rez=1;
for(i=1; i<=k; ++i)
{
rez*=n-k+i;
rez/=i;
}
return rez;
}
long long Nr(long long kk, long long x)
{
if(kk==1)
return 1;
long long n=d[kk][(K+M-1)%M][N]+x-1,k=x;
long long nr=2,rez=1,i;
for(int i=n-k+1;i<=n;++i)
{
rez*=i;
while(nr<=k&&rez%nr==0)
{
rez/=nr;
nr++;
}
}
return rez;
}
int main()
{
ifstream f("arbori.in");
ofstream g("arbori.out");
f>>N>>M>>K;
for(i=0; i<=N; i++) d[1][0][i]=1;
for (i=2; i<=N; i++)
for(j=0; j<M; j++)
for(k=1; k<=N; k++)
for(x=0; x<=i/k; x++)
d[i][j][k]+=d[i-x*k][(j-x+M*x)%M][k-1]*Nr(k,x);
g<<d[N][K][N];
return 0;
}