Pagini recente » Cod sursa (job #1494978) | Cod sursa (job #1634179) | Cod sursa (job #523584) | Cod sursa (job #2888756) | Cod sursa (job #254453)
Cod sursa(job #254453)
#include <stdio.h>
#define NMAX 32
long long DIN[NMAX];
long long N, K;
void BST(long long st, long long dr, long long k)
{
long long S = 0, x, y, k1, k2, i;
if (st > dr) return;
if (st == dr) {
printf("%d ", st);
return;
}
for (i = st; i <= dr; i++)
{
x = DIN[i - st];
y = DIN[dr - i];
S = S + x * y;
if (S > k) break;
}
k = k - (S - x * y);
printf("%d ", i);
k1 = k / y;
k2 = k % y;
BST(st, i - 1, k1);
BST(i + 1, dr, k2);
}
int main()
{
freopen("planeta.in", "r", stdin);
freopen("planeta.out", "w", stdout);
long long i, j;
scanf("%d %d ", &N, &K);
DIN[1] = 1;
DIN[0] = 1;
for (i = 2; i <= N; i++)
for (j = 1; j <= i; j++)
DIN[i] = DIN[i] + DIN[j - 1] * DIN[i - j];
BST(1, N, K - 1);
return 0;
}