Pagini recente » Cod sursa (job #2286451) | Cod sursa (job #998247) | Cod sursa (job #1711716) | Cod sursa (job #130441) | Cod sursa (job #133826)
Cod sursa(job #133826)
#include<stdio.h>
#include<string.h>
long int n,k,j,jj,ok;
long long int p,ne,ee[35],sol,step;
char sc[35],sf[35],al[35],c;
void prel(long int cr,long int ec);
int main()
{
FILE *f,*g;f=fopen("expresii2.in","r");g=fopen("expresii2.out","w");
fscanf(f,"%ld%ld%lld",&n,&k,&p);
c='A';al[0]=c;
ee[1]=k;ee[2]=k;
for(j=3;j<=n;j++)
{ ee[j]=ee[j-1];
for(jj=1;jj<=j-2;jj++)
ee[j]=ee[j]+2*ee[jj]*ee[j-jj-1];
}
sol=ee[n];step=sol/k;
ne=0;jj=1;
for(;;){if(ne+step>p)break;jj++;ne+=step;}
for(j=1;j<=30;j++)al[j]=c++;
sc[0]=al[jj];prel(n-1,1);
fprintf(g,"%lld\n",sol);
fprintf(g,"%s\n",sc);
fcloseall();
return 0;
}
void prel(long int cr,long int ec)
{ long int i;
if(!cr){ne++;if(ne==p)ok=1;return;}
if(cr>=ec+1)
{ for(i=1;i<=k;i++){sc[n-cr]=al[i];prel(cr-1,ec+1);if(ok)return;}
if(ec>1){sc[n-cr]='+';prel(cr-1,ec-1);if(ok)return;
sc[n-cr]='*';prel(cr-1,ec-1);if(ok)return;}
sc[n-cr]='!';prel(cr-1,ec);if(ok)return;
return;
}
if(cr==ec)
{ if(ec>1){sc[n-cr]='+';prel(cr-1,ec-1);if(ok)return;
sc[n-cr]='*';prel(cr-1,ec-1);if(ok)return;}
sc[n-cr]='!';prel(cr-1,ec);if(ok)return;
return;
}
if(ec>1){sc[n-cr]='+';prel(cr-1,ec-1);if(ok)return;
sc[n-cr]='*';prel(cr-1,ec-1);if(ok)return;}
}