Cod sursa(job #1046343)

Utilizator denisilie94Ilie Denis denisilie94 Data 2 decembrie 2013 20:51:18
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
int put (int b,int e)
{
int i,r=1;
for(i=1;i<=e;i++){r=r*b;}
return r;
}
int s=0,pp=5,n,cp,i;
long int x,p;
FILE *f,*g;
int main ()
{

f=fopen("fact.in","r");
fscanf(f,"%ld",&p);fclose(f);
g=fopen("fact.out","w");
if(p==0)fprintf(g,"%d",1);
	else if(p==1)fprintf(g,"%d",5);
	else{	do{s=s+pp-1;pp*=5;n++;}while(s<p);
            x=(put(5,n)/(put(5,n)-1))*4*p;
			if(x%10!=5){
				if(x%10<5){x=x-x%10+5;}
					else{x=x-x%10+10;}}
			for(i=1;i<=n;i++){cp=cp+x/put(5,i);}	
			while((cp!=p)&&(x<(put(5,n)/(put(5,n)-1))*4*(p+n-1))){
				x+=5;
				cp=0;
				for(i=1;i<=n;i++){cp=cp+x/put(5,i);}}
			if(cp==p)fprintf(g,"%ld",x);
					else fprintf(g,"%d",-1);
			}

fclose(g);
return 0;

}