Cod sursa(job #1614888)

Utilizator armandpredaPreda Armand armandpreda Data 26 februarie 2016 11:38:53
Problema Planeta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

ifstream cin("planeta.in");
ofstream cout("planeta.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;
}