Pagini recente » Cod sursa (job #923472) | Cod sursa (job #1874452) | Cod sursa (job #28857) | Cod sursa (job #2889914) | Cod sursa (job #2210403)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("planeta.in");
ofstream fout ("planeta.out");
long long n, k; unsigned long long dp[32];
void f(int st, int dr, long long k) {
if (st > dr)
return;
int nr = st;
long long val = dp[nr - st] * dp[dr - nr];
while (nr <= dr && val < k) {
k -= val;
nr++;
if (nr <= dr) {val = dp[nr - st] * dp[dr - nr];}
}
fout << nr << " ";
int ST, DR;
ST = ceil((double)k / dp[dr - nr]);
DR = ((k % dp[dr - nr])?k % dp[dr - nr]: dp[dr - nr]);
f(st, nr - 1, ST);
f(nr + 1, dr, DR);
}
int main()
{
fin >> n >> k;
dp[0] = 1;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++)
dp[i] += dp[j - 1] * dp[i - j];
f(1, n, k);
return 0;
}