Pagini recente » Cod sursa (job #1486229) | Cod sursa (job #614730) | Cod sursa (job #552230) | Cod sursa (job #1644358) | Cod sursa (job #263282)
Cod sursa(job #263282)
#include<stdio.h>
#include<algorithm>
using namespace std;
long long d[64],n,k,i,r;
FILE *g = fopen("planeta.out","w");
void reconst(int st,int dr,int k){
long long s = 0,r;
if(st > dr)
return ;
if(st == dr){
fprintf(g,"%lld ",st);
return ;
}
for(r=st; r<=dr; r++){
s+=d[r-st] * d[dr-r];
if(s >= k){
s-=d[r-st] * d[dr-r];
break;
}
}
fprintf(g,"%lld ",r);
reconst(st, r-1, (k-s - 1) / d[dr - r] + 1);
reconst(r+1, dr, (k-s - 1) % d[dr - r] + 1);
}
int main(){
FILE *f = fopen("planeta.in","r");
fscanf(f,"%lld %lld",&n,&k);
d[0] = 1;
for(i=1; i<=n; i++)
for(r=1; r<=n; r++)
d[i]+= d[r-1] * d[i - r];
reconst(1,n,k);
fclose(f);
fclose(g);
}