Cod sursa(job #292839)
| Utilizator | Data | 31 martie 2009 18:39:27 | |
|---|---|---|---|
| Problema | Planeta | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include <stdio.h>
long long C[32];
void calc(int l,int r,long long k){
int i=l;
while ( i <= r && C[i-l] * C[r-i] <= k ){
k-= C[i-l] * C[r-i]; ++i;
}
printf("%d ",i);
if (l < i) calc(l, i-1, k / C[r-i] );
if (r > i) calc(i+1, r, k % C[r-i] );
}
int main(){
freopen("planeta.in","r",stdin); freopen("planeta.out","w",stdout);
int n,i; long long k;
scanf("%d %lld",&n,&k);
k--;
C[0]=1;
for (i=1;i<32;++i)C[i]=2*(2*i-1)*C[i-1]/(i+1);
calc(1,n,k);
return 0;
}
