Pagini recente » Cod sursa (job #2167551) | Cod sursa (job #1785381) | Cod sursa (job #17285) | Cod sursa (job #3240700) | Cod sursa (job #357343)
Cod sursa(job #357343)
#include <cstdio>
int n, a[40], t;
long long v[40], k;
void solve (int l, int r, long long k)
{
int x=r-l+1, p, i;
long long s=0, j;
if (l<=r && k>0)
{
for (i=1; i<=x; i++)
{
s+=v[i-1]*v[x-i];
if (k<=s)
{
s-=v[i-1]*v[x-i];
p=i;
break;
}
}
if (k>s) k-=s;
j=v[r-(l+p-1)];
int c=k/j;
int d=k-c*j;
if (k%j>0) c++; else d++;
t++;
a[t]=l-1+p;
solve(l,l+p-2,c);
solve(l+p,r,d);
}
}
int main()
{
freopen("planeta.in","r",stdin);
freopen("planeta.out","w",stdout);
scanf("%d %lld",&n,&k);
v[0]=1;
v[1]=1;
int i,j;
for (i=2; i<=n; i++)
for (j=0; j<i; j++) v[i]+=v[j]*v[i-j-1];
solve(1,n,k);
for (i=1; i<=n; i++) printf("%d ",a[i]);
}