Pagini recente » Cod sursa (job #1376865) | Cod sursa (job #2851105) | Cod sursa (job #1434605) | Cod sursa (job #2665341) | Cod sursa (job #2898275)
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
int n, i, j;
long long k;
vector<long long> result(31, 0);
stringstream *buff = new stringstream();
void operator>>(stringstream &strstr, ofstream &out) {
out << strstr.str();
}
inline void planeta(int r, long long kk, int l) {
int ii;
for (ii = l; result[ii - l] * result[r - ii] <= kk && ii <= r; ++ii) {
kk -= result[ii - l] * result[r - ii];
}
*buff << ii << ' ';
if (ii > l) {
planeta(ii - 1, kk / result[r - ii], l);
}
if (ii < r) {
planeta(r, kk % result[r - ii], ii + 1);
}
}
int main() {
fin >> n >> k;
result[0] = 1;
result[1] = 1;
for (i = 2; i <= n; ++i) {
for (j = 1; j <= i; ++j) {
result[i] += result[i - j] * result[j - 1];
}
}
planeta(n, k - 1, 1);
*buff >> fout;
return 0;
}