Pagini recente » Cod sursa (job #1502103) | Cod sursa (job #2837963) | Cod sursa (job #2109192) | Cod sursa (job #3289417) | Cod sursa (job #1794772)
#include <iostream>
#include <cstdio>
#define MAXN 50
using namespace std;
int n;
long long din[MAXN], k;
void solve(int st, int dr, long long kth)
{
int j, sz = (dr-st+1);
if (sz <= 0) return;
for (j = 0; j < sz; j++)
if (kth > din[j] * din[sz-j-1])
kth -= din[j] * din[sz-j-1];
else break;
printf("%d ", st+j);
solve(st, st+j-1, 1+(kth-1)/din[sz-j-1]);
solve(st+j+1, dr, 1+(kth-1)%din[sz-j-1]);
}
int main()
{
freopen("planeta.in", "r", stdin);
freopen("planeta.out", "w", stdout);
scanf("%d %d", &n, &k);
din[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = 0; j < i; j++)
din[i] += din[j] * din[i-j-1];
solve(1, n, k);
return 0;
}