Cod sursa(job #133793)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 9 februarie 2008 19:21:34
Problema Expresii 2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<string.h>
long int n,k,j;
long long int p,ne;
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;
	for(j=1;j<=30;j++)al[j]=c++;
	for(j=1;j<=k;j++)
	{ sc[0]=al[j];prel(n-1,1);}
	fprintf(g,"%lld\n",ne);
	fprintf(g,"%s\n",sf);
	fcloseall();
	return 0;
}
void prel(long int cr,long int ec)
{       long int i;
        if(ec<=0)return;
	if(cr<ec-1)return;
	if(!cr)
	{ if(ec>1)return;
	  ne++;
	  if(ne==p)strcpy(sf,sc);
	  return;
	}
	if(cr==ec-1)
	{ sc[n-cr]='+';prel(cr-1,ec-1);
	  sc[n-cr]='*';prel(cr-1,ec-1);
	  return;
	}
	for(i=1;i<=k;i++)
	{sc[n-cr]=al[i];prel(cr-1,ec+1);}
	sc[n-cr]='+';prel(cr-1,ec-1);
	sc[n-cr]='*';prel(cr-1,ec-1);
	sc[n-cr]='!';prel(cr-1,ec);
}