Cod sursa(job #74431)

Utilizator zobicaMarin Marin zobica Data 25 iulie 2007 20:09:42
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;

long long p, put[100], nrp = 0;

void citire() {
	ifstream fin("fact.in");
	fin >> p;
	fin.close();
}

void gen_put() {	
	for(long p = 5; p <= 1220703125; p*=5)

		put[nrp++] = p;
}

long long zero(long n) {
	long long s = 0;
	for (long long i = 0; i < nrp && n / put[i] > 0; i++)
		s += n / put[i];
	return s;
}

long long numar() {
	if (!p)
		return 1;
	long long  st = 1; 
	long long dr = 5 * p < 2000000000 ? 5 * p : 2000000000;
	while (st <= dr) {
		long long  m = (st + dr) >> 1;
		long long z = zero(m);  
		if  (z == p) {
			while (zero(m) == p)
				m--;
			return m + 1;
		}
		if (z < p)
			st = m + 1;
		else
			dr = m - 1;
	}
	return -1;
}


int main() {
	citire();
	gen_put();
	ofstream fout("fact.out");
	fout<< numar();
	fout.close();
}