Pagini recente » Cod sursa (job #2157341) | Cod sursa (job #2359822) | Cod sursa (job #327123) | Cod sursa (job #2783601) | Cod sursa (job #1497590)
#include <fstream>
#include <vector>
#define lint long long int
using namespace std;
lint c[31];
vector <int> v;
void det (lint k, int st, int dr) {
if (dr < st)
return ;
for (int i = st; i <= dr; ++ i)
if (k > c[i - st] * c[dr - i])
k -= c[i - st] * c[dr - i];
else {
v.push_back(i);
det((k - 1) / c[dr - i] + 1, st, i - 1);
det((k - 1) % c[dr - i] + 1, i + 1, dr);
break;
}
}
int main()
{
ifstream cin("planeta.in");
ofstream cout("planeta.out");
c[0] = 1;
c[1] = 1;
c[2] = 2;
int j;
for (int i = 3; i <= 30; ++ i)
for (j = 1; j <= i; ++ j)
c[i] += c[j - 1] * c[i - j];
int n = 1;
lint k = 1;
cin >> n >> k;
det(k, 1, n);
for (int i = 0; i < n; ++ i)
cout << v[i] << " \n"[i + 1 == n];
cin.close();
cout.close();
return 0;
}