Pagini recente » Cod sursa (job #2891915) | Cod sursa (job #2229524) | Cod sursa (job #873802) | Cod sursa (job #355248) | Cod sursa (job #2899756)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
long long n, k, val[65];
void generare(long long val[], long long stanga, long long dreapta, long long aux) {
long long radacina = stanga;
while (radacina < dreapta && aux - val[radacina - stanga] * val[dreapta - radacina] >= 0) {
aux -= val[radacina - stanga] * val[dreapta - radacina];
radacina += 1;
}
fout << radacina << " ";
if (radacina > stanga) {
generare(val, stanga, radacina - 1, aux / val[dreapta - radacina]);
}
if (radacina < dreapta) {
generare(val, radacina + 1, dreapta, aux % val[dreapta - radacina]);
}
}
int main() {
int index1, index2;
fin >> n >> k;
val[0] = 1;
for (index1 = 1; index1 <= 64; index1 += 1) {
for (index2 = 1; index2 <= index1; index2 += 1) {
val[index1] = val[index1] + val[index1 - index2] * val[index2 - 1];
}
}
generare(val, 1, n, k - 1);
return 0;
}