Pagini recente » Cod sursa (job #1000582) | Cod sursa (job #729742) | Cod sursa (job #863381) | Cod sursa (job #682187) | Cod sursa (job #2210395)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("planeta.in");
ofstream fout ("planeta.out");
int 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++;
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;
}