Pagini recente » Cod sursa (job #335950) | Cod sursa (job #620538) | Cod sursa (job #1958079) | Cod sursa (job #3154556) | Cod sursa (job #2899249)
#include <fstream>
#define NMAX 31
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
int N;
long long K, x[NMAX];
void tree(int st, int dr, int k)
{
int i;
long long dif;
for(i = st; i <= dr && k > x[i - st] * x[dr - i]; ++i)
k -= x[i - st] * x[dr - i];
fout<<i<<" ";
if(i > st)
tree(st, i - 1, 1 + (k - 1) / x[dr - i]);
dif = k % x[dr - i];
if(dif == 0)
dif = x[dr - i];
if(i < dr)
tree(i + 1, dr, dif);
}
int main()
{
fin>>N>>K;
x[0] = x[1] = 1;
for(int i = 2; i <= N; ++i)
for(int j = 1; j <= i; ++j)
x[i] += x[j - 1] * x[i - j];
tree(1, N, K);
return 0;
}