Cod sursa(job #629269)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 3 noiembrie 2011 00:28:18
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>

int cate_zerouri(long n){
   //cate zerouri are n!
   int suma=0,pn=5;
   while(pn<n) {
      suma+=n/pn;  
      pn*=5;
   }
   return suma;
}

int cauta_n(int p){
   int li,ls,k,s,pn;
	li=1;
	ls=1000000000;
	while(li<ls){
           k=li+(ls-li)/2;
	   s=cate_zerouri(k);
	   if(s==p) return k;
	   if(s<p) li=k+1;
	      else ls=k-1;
	}
	return 0;
}

int main()
{
	int p,k;
	FILE *fin=fopen("fact.in","r");
	fscanf(fin,"%d",&p);
	fclose(fin);
	k=cauta_n(p);
	k=k-k%5;
	FILE *fout=fopen("fact.out","w");
	if (p == 0) fprintf(fout,"1\n");
	else if(k)  fprintf(fout,"%d\n",k);
	else  fprintf(fout,"-1\n");
	fclose(fout);
	return 0;
}