Pagini recente » Cod sursa (job #1730047) | Cod sursa (job #273438) | Cod sursa (job #1842117) | Cod sursa (job #1729521) | Cod sursa (job #1496966)
#include <cstdio>
#define nmax 35
using namespace std;
int n;
long long d[nmax]={1},k;
void choose(long long k,int x,int y)
{
if (x>y)
return;
int i,j;
for (i=y-x+1,j=1;d[i-j]*d[j-1]<k&&j<=i;k-=d[i-j]*d[j-1],++j);
printf("%d ",x+j-1);
choose((k-1)/d[i-j]+1,x,x+j-2);
choose((k-1)%d[i-j]+1,x+j,y);
}
int main()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
int i,j;
scanf("%d %lld",&n,&k);
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
d[i]+=1LL*d[i-j]*d[j-1];
choose(k,1,n);
return 0;
}