Pagini recente » Cod sursa (job #709034) | Cod sursa (job #708497) | Cod sursa (job #1414811) | Cod sursa (job #692853) | Cod sursa (job #2533359)
#include <bits/stdc++.h>
using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");
long long dp[31];
inline void solve(int st, int dr, long long k) {
if (st > dr)
return;
for (int root = st; root <= dr; ++root) {
if (dp[root - st] * dp[dr - root] <= k)
k -= dp[root - st] * dp[dr - root];
else {
out << root << " ";
solve(st, root - 1, k / dp[dr - root]);
solve(root + 1, dr, k % dp[dr - root]);
return;
}
}
}
int main() {
int n;
long long k;
in >> 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];
}
solve(1, n, k - 1);
return 0;
}