Pagini recente » Cod sursa (job #1181824) | Cod sursa (job #616548) | Cod sursa (job #178086) | Cod sursa (job #1608448) | Cod sursa (job #654017)
Cod sursa(job #654017)
#include<stdio.h>
#define maxn 31
FILE*f=fopen("planeta.in","r");
FILE*g=fopen("planeta.out","w");
int n,i,j;
long long k,D[maxn];
void build ( int n , long long conf , int ad ){
if ( !n ){
return ;
}
int nod = 1;
while ( D[nod-1] * D[n-nod] < conf && nod < n ){
conf -= D[nod-1] * D[n-nod]; ++nod;
}
fprintf(g,"%d ",nod+ad);
long long c1 = conf / D[n-nod] + ((conf % D[n-nod]) != 0);
long long c2 = conf % D[n-nod] + ((conf % D[n-nod]) == 0) * D[n-nod];
build(nod-1,c1,ad);
build(n-nod,c2,ad+nod);
}
int main () {
fscanf(f,"%d %ldd",&n,&k);
D[0] = 1;
for ( i = 1 ; i <= n ; ++i ){
for ( j = 0 ; i - j - 1 >= 0 ; ++j ){
D[i] += D[j] * D[i-j-1];
}
}
build(n,k,0);
fprintf(g,"\n");
fclose(f);
fclose(g);
return 0;
}