Pagini recente » Cod sursa (job #2327257) | Cod sursa (job #3188844) | Cod sursa (job #1730273) | Cod sursa (job #292303) | Cod sursa (job #1536611)
#include <cstdio>
#define DIM 32
using namespace std;
unsigned long long D[DIM], K; int N;
void getTree (int N, unsigned long long K, int val) {
unsigned long long S = 0;
for (int x = 1; x <= N; x ++) {
if (S + D[x-1] * 1LL * D[N-x] < K)
S += D[x-1] * 1LL * D[N-x];
else {
printf ("%d ", x + val);
getTree (x-1, (K-S) / D[N-x], val + 0);
getTree (N-x, (K-S) % D[N-x], val + x);
break;
}
}
return;
}
int main () {
freopen ("planeta.in" ,"r", stdin );
freopen ("planeta.out","w", stdout);
scanf ("%d %lld", &N, &K);
D[0] = D[1] = 1;
for (int i = 2; i <= N; i ++)
for (int x = 1; x <= i; x ++)
D[i] += D[x-1] * 1LL * D[i-x];
getTree (N, K, 0);
return 0;
}