Pagini recente » Cod sursa (job #400335) | Cod sursa (job #2657434) | Cod sursa (job #2650651) | Cod sursa (job #2343461) | Cod sursa (job #255904)
Cod sursa(job #255904)
#include <fstream>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
#define ll long long
#define NMAX 31
ll Comb[NMAX], K;
int N;
void nodSearch (int Parent, int Length, ll M);
int main()
{
int i, j;
fin>>N>>K;
Comb[0] = 1;
for (i = 1; i <= N + 1; i++)
for (j = 0; j <= i - 1; j++)
Comb[i] += Comb[j] * Comb[i - 1 - j];
nodSearch(1, N, K - 1);
fout.close();
return 0;
}
void nodSearch (int Parent, int Length, ll M)
{
if (Length == 0)
return ;
int i, Root;
for (Root = 1; Comb[Root - 1] * Comb[Length - Root] <= M; Root++)
M -= Comb[Root - 1] * Comb[Length - Root];
fout <<Root + Parent - 1 <<' ' ;
if (Root > 1) nodSearch(Parent , Root - 1, M / Comb[Length - Root]);
if (Root < Length) nodSearch(Root + Parent , Length - Root, M % Comb[Length - Root]);
}