Cod sursa(job #381435)

Utilizator CS-meStanca Marian Ciprian CS-me Data 10 ianuarie 2010 17:11:09
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
/*Se da un nr intreg p gasiti ce l mai mic nr strict n,natural a.i. n!
are p cif 0 la sf */
#include <stdio.h>
#include <limits.h>
FILE *f;
long p,n;



int main(){
long x,u,t,s;
		f=fopen("fact.in","r");
		fscanf(f,"%ld",&p);
		fclose(f);
		f=fopen("fact.out","w");
		if(p==0){
		  fprintf(f,"1");
		  return 0;
		}
		x=1; u=LONG_MAX;
		while(x<=u){
			 n=(x+u)/2;

			 t=5;  s=0;
			 while(t<=n){
				  s+=n/t;
				  t*=5;
			 }

			 if(s==p) {
			   n=n-n%5;
			   fprintf(f,"%ld",n);
			   break;
			 }
			 else {
				  if(s>p){
					//caut in stanga
					u=n-1;
				  }
				  else{
					  x=n+1;
				  }
			 }

		}
		if(x>u){
		  fprintf(f,"-1");
		}
		fclose(f);
return 0;
}