Cod sursa(job #480232)

Utilizator ovydewParvu Ovidiu ovydew Data 27 august 2010 00:55:40
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
// Afla ce numar factorial are p cifre de zero la final

#include <fstream>

using namespace std;

int main() {
	FILE* fin = fopen("fact.in","r");
	FILE* fout = fopen("fact.out","w");
	long p, nr_zero, l, r, m, old;
	bool flag = true;
	fscanf(fin, "%d", &p);
	fclose(fin);
	if (p==0) {
		fprintf(fout, "%d", 1);
		fclose(fout);
		return 0;
	}
	old = -1;
	l = 0;
	r = 1000000000;
	while ((l!=r) && (flag)) {
		m = (l+r) / 2;
		flag = (m!=old);
		nr_zero = 0;
		int tmp = m;
		while ( tmp>=5) {
			nr_zero += tmp/5;
			tmp = tmp/5;
		}
		if (p>nr_zero)
			l = m;
		else if (p<nr_zero)
			r = m;
		else l = r;
		old = m;
	}
	if (!flag) {
		fprintf(fout, "%d", -1);
		fclose(fout);
		return 0;
	}
	while (m%5!=0)
		m--;
	fprintf(fout, "%d", m);
	fclose(fout);
	return 0;
}