Pagini recente » Cod sursa (job #660547) | Cod sursa (job #3157891) | Cod sursa (job #2005494) | Cod sursa (job #703244) | Cod sursa (job #2751699)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("planeta.in");
ofstream out("planeta.out");
int N;
long long K;
long long arbori[33];
void generare(int N)
{
arbori[0] = 1;
for(int i=1; i<=N; ++i)
{
for(int j = 1; j <= i; ++j)
{
arbori[i] += arbori[j-1]*arbori[i-j];
}
}
}
void cautare(short radacina, short N, long long K)
{
if(N==0)
return;
if(N==1)
{
out<<radacina+1<<" ";
return;
}
for(int i=1 ; i<=N; i++)
{
if(arbori[i-1]*arbori[N-i] >= K)
{
out<< radacina+i<<" ";
cautare(radacina, i-1, (K-1)/arbori[N-i]+1);
cautare(radacina+i, N-i, (K-1)%arbori[N-i]+1);
return;
}
K -= arbori[i-1]*arbori[N-i];
}
}
int main()
{
in>>N>>K;
generare(N);
cautare(0,N,K);
return 0;
}