Pagini recente » Cod sursa (job #2371635) | Cod sursa (job #793294) | Cod sursa (job #3209217) | Cod sursa (job #904910) | Cod sursa (job #1614887)
#include <fstream>
using namespace std;
ifstream cin("planenta.in");
ofstream cout("planenta.out");
const int LIM=31;
int n;
long long k, nr[LIM];
void solve(long long x, int st, int dr)
{
for(int i=st; i<=dr; ++i)
if(x>nr[i-st]*nr[dr-i])
x-=nr[i-st]*nr[dr-i];
else
{
cout<<i<<' ';
solve(1+(x-1)/nr[dr-i], st, i-1);
long long xnou=x%nr[dr-i];
if(xnou==0)
xnou=nr[dr-i];
solve(xnou, i+1, dr);
break;
}
}
int main()
{
cin>>n>>k;
nr[0]=nr[1]=1;
for(int i=2; i<=n; ++i)
for(int j=1; j<=i; ++j)
nr[i]+=nr[j-1]*nr[i-j];
solve(k, 1, n);
return 0;
}