Pagini recente » Cod sursa (job #467701) | Cod sursa (job #1093208) | Cod sursa (job #1655654) | Cod sursa (job #2245494) | Cod sursa (job #479044)
Cod sursa(job #479044)
#include <cstdio>
#define file_in "arbori.in"
#define file_out "arbori.out"
#define ll long long
int N,M,K;
ll a[100][12][100];
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d", &N, &M, &K);
}
ll comb(ll n, ll k)
{
int i;
ll rez=1;
for (i=1;i<=k;++i)
{
rez*=n-k+i;
rez/=i;
}
return rez;
}
ll Nr(ll kk, ll x)
{
if(kk==1)
return 1;
ll n=a[kk][(K+M-1)%M][N]+x-1,k=x;
ll nr=2,rez=1,i;
for(i=n-k+1;i<=n;++i)
{
rez*=i;
while(nr<=k && rez%nr==0)
{
rez/=nr;
nr++;
}
}
return rez;
}
void solve()
{
int i,j,k,x;
for(i=0;i<=N;i++) a[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)
a[i][j][k]+=a[i-x*k][(j-x+M*x)%M][k-1]*Nr(k,x);
printf("%lld\n", a[N][K][N]);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}