Pagini recente » Cod sursa (job #3246354) | Cod sursa (job #1030375) | Cod sursa (job #22381) | Cod sursa (job #227648) | Cod sursa (job #258072)
Cod sursa(job #258072)
#include <stdio.h>
#define MAXN 35
#define ll long long
int N, L;
int S[MAXN];
ll K;
ll C[MAXN];
void reconstruct(int p, int r, ll K)
{
int i;
for (i = p; i <= r && C[i-p]*C[r-i] <= K; i++) K -= C[i-p] * C[r-i];
S[++L] = i;
if (p <= i-1) reconstruct(p, i-1, K / C[r-i]);
if (i+1 <= r) reconstruct(i+1, r, K % C[r-i]);
}
int main()
{
freopen("planeta.in", "r", stdin);
freopen("planeta.out", "w", stdout);
int i, j;
scanf("%d %lld ", &N, &K);
C[0] = 1;
for (i = 1; i <= N; i++)
for (j = 1; j <= i; j++) C[i] += C[j-1] * C[i-j];
reconstruct(1, N, K-1);
for (i = 1; i <= N; i++) printf("%d ", S[i]);
printf("\n");
return 0;
}