Pagini recente » Cod sursa (job #3127098) | Cod sursa (job #1137839) | Cod sursa (job #2811283) | Cod sursa (job #1579985) | Cod sursa (job #1583374)
#include <fstream>
using namespace std;
long long n,k,i,d[31][31][31],s[31];
ifstream fin ("planeta.in");
ofstream fout ("planeta.out");
void dinamica()
{
int i,j,l;
s[0]=1;
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
s[i]+=s[j-1]*s[i-j];
}
void FindRoot(int a,int b,long long k)
{
int i,ad=0;
for (i=a;ad+s[i-a]*s[b-i]<k&&i<b;i++)
ad+=s[i-a]*s[b-i];
fout<<i<<" ";
if (a<=i-1) FindRoot(a,i-1,(k-ad-1)/s[b-i]+1);
if (i+1<=b) FindRoot(i+1,b,(k-ad-1)%s[b-i]+1);
}
int main()
{
fin>>n>>k;
dinamica();
FindRoot(1,n,k-1);
fin.close();
fout.close();
return 0;
}