Cod sursa(job #381438)

Utilizator CS-meStanca Marian Ciprian CS-me Data 10 ianuarie 2010 17:13:22
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
/*
	Se da un nr intreg p. Sa se gaseasca cel mai mic nr strict pozitiv n
pentru care n! are exact p cifre de 0 la sfarsit...
*/

#include<stdio.h>
#include<limits.h>
FILE *fin, *fout;
long int n,p,inc,sf,nr,min;

long int zero(long int n){
long int i,nr;
nr=0;

	i=5;

	while(i<=n){
		nr+=n/i;
		i*=5;
	}

return nr;
}

int main(){

	fin=fopen("fact.in","r");
	fout=fopen("fact.out","w");

	fscanf(fin,"%ld",&p);

	inc=1;
	sf=LONG_MAX;

	if(p==0){
		fprintf(fout,"1");
		return 0;
	}
	while(inc<=sf){
		n=(inc+sf)/2;

		nr=zero(n);

		if(nr==p){
			n=n-n%5;
			fprintf(fout,"%ld",n);
			break;
		}
		else
		if(nr>p){
			sf=n-1;
		}
		else{
			inc=n+1;
		}
	}

	if(inc>sf){
		fprintf(fout,"-1");
	}

	fclose(fout);
	fclose(fin);

return 0;
}