Pagini recente » Cod sursa (job #1255290) | Cod sursa (job #667728) | Cod sursa (job #297075) | Cod sursa (job #2473441) | Cod sursa (job #254465)
Cod sursa(job #254465)
#include <fstream>
using namespace std;
ifstream fin("planeta.in");
ofstream fout("planeta.out");
#define NMAX 32
long long A[NMAX],n,k,sum,B[NMAX];
void cauta(int u,int l,int s,int r)
{
int i,p=0;
for (i=0; i<=l-1,s-p>0;i++)
{
p+=A[i]*A[l-1-i];
}
i--;
p-=A[i]*A[l-1-i];
if (r==0)
fout<<u+i<<' ';
else fout<<1+i<<' ';
s-=p;
int ax=s%A[i];
if (i==0) ax=s;
int ax2;
if (ax==0) ax2=s/A[i]; else ax2=s/A[i]+1;
if (ax==0) ax=A[i];
if (i==l-1) ax2=s;
if (i>0)
cauta(1,i,ax2,1);
if (i<l-1)
cauta(u+i+1,l-i-1,ax,0);
}
int main()
{
fin>>n>>k;
int i,j;
A[0]=1;
A[1]=1;
A[2]=2;
sum=3;
for (i=3;i<=n;i++)
{
for (j=0;j<=i-1;j++)
A[i]+=A[j]*A[i-1-j];
B[i]=A[i];
}
B[1]=1; B[2]=2; B[0]=0;
fout<<'\n';
cauta(1,n,k,1);
fout.close();
return 0;
}