Cod sursa(job #998403)
| Utilizator | Data | 16 septembrie 2013 22:25:48 | |
|---|---|---|---|
| Problema | Planeta | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
#include<fstream>
#define ll long long
using namespace std;
ifstream f("planeta.in"); ofstream g("planeta.out");
int n;
ll k,c[32];
void calc(int p, int u, ll nr)
{ int i;
for(i=p;i<=u&&c[i-p]*c[u-i]<=nr; ++i) nr-=c[i-p]*c[u-i];
g<<i<<' ';
if(p<i) calc(p,i-1,nr/c[u-i]);
if(i<u) calc(i+1,u,nr%c[u-i]);
}
int main()
{ f>>n>>k;
c[0]=1;
for(int i=1; i<=n; ++i)
for(int j=0; j<i; ++j)
c[i]+=c[j]*c[i-j-1];
calc(1,n,k-1);
g.close(); return 0;
}
