Pagini recente » Cod sursa (job #1353317) | Cod sursa (job #254588) | Cod sursa (job #842109) | Cod sursa (job #3139264) | Cod sursa (job #257663)
Cod sursa(job #257663)
#include <stdio.h>
#define LL long long
#define MAX_N 35
LL c[MAX_N][MAX_N][MAX_N], fin[MAX_N], m;
void parc(int n, LL m, int afis) {
LL cop = m;
if (n == 0) return;
for (int i = 0; i < n; i++)
if (c[n][i][n - i - 1] <= cop) cop -= c[n][i][n - i - 1];
else {
printf("%d ", afis + i);
parc(i, cop / fin[n - i - 1], afis);
parc(n - i - 1, cop % fin[n - i - 1], afis + i + 1);
break;
}
}
int main() {
freopen("planeta.in", "r", stdin);
freopen("planeta.out", "w", stdout);
int n;
scanf("%d %lld", &n, &m);
c[1][0][0] = 1;
fin[0] = fin[1] = 1;
for (int i = 2; i <= n; i++)
for (int j = 0; j < i; j++) {
c[i][j][i - j - 1] = 1LL * fin[j] * fin[i - j - 1];
fin[i] += c[i][j][i - j - 1];
}
parc(n, m - 1, 1);
return 0;
}