Cod sursa(job #1046296)

Utilizator denisilie94Ilie Denis denisilie94 Data 2 decembrie 2013 20:19:16
Problema Factorial Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 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;
}
long int s=0,pp=5,p,x,cp;
int i,n;
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=4*p*put(5,n)/(put(5,n)-1);
			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<4*(p+n-1)*put(5,n)/(put(5,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;

}