Pagini recente » Cod sursa (job #3162659) | Cod sursa (job #2733553) | Cod sursa (job #2944305) | Cod sursa (job #657727) | Cod sursa (job #2533225)
//#include <iostream>
#include <fstream>
using namespace std;
long long d[35];
int answer[40],poz;
void rec(int n,long long k,int mom){
if(n==0)
return;
int curent=1;
while(k>=d[curent-1]*d[n-curent]){
k-=d[curent-1]*d[n-curent];
curent++;
}
answer[++poz]=curent+mom;
rec(curent-1,k/d[n-curent],mom);
rec(n-curent,k%d[n-curent],mom+curent);
}
int main()
{
ifstream cin("planeta.in");
ofstream cout("planeta.out");
int n,k;
cin>>n>>k;
d[0]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
d[i]+=d[j-1]*d[i-j];
}
}
k--;
rec(n,k,0);
for(int i=1;i<=n;i++)
cout<<answer[i]<<" ";
return 0;
}