Cod sursa(job #3135973)

Utilizator Catalina323Catalina Nica Catalina323 Data 4 iunie 2023 21:46:21
Problema Planeta Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

std::ifstream fin("planeta.in");
std::ofstream fout("planeta.out");

long long arb[31];

void func(long long s, long long d, long long k) {

    long long aux;

    for (long long i = s; i <= d; i++)
    {
        if (k > (arb[d - i] * arb[i - s]))
        {
            k = k - arb[d - i] * arb[i - s];
        }
        else {
            fout << i << ' ';
            func(s, i - 1, ((k - 1) / arb[d - i] + 1));
            aux = k % arb[d - i];

            if (aux != 0)
            {
                aux = arb[d - i];
            }

            func(i + 1, d, aux);
            i = d + 1;

        }
    }
}

int main() {

    long long n, k;
    fin >> n >> k;

    arb[0] = 1;
    arb[1] = 1;

    for (long long i = 2; i <= n; i++) 
    {
        for (long long j = 0; j < i; j++) 
        {
            arb[i] = arb[i] + arb[i - j - 1] * arb[j];
        }
    }

    func(1, n, k);

    return 0;
}