Cod sursa(job #2359135)

Utilizator bojemoiRadu Mamaliga bojemoi Data 28 februarie 2019 17:40:42
Problema Factorial Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>

using namespace std;

ifstream fin("fact.in");
ofstream fout("fact.out");

long long p;
long long pow5[20];


long long zerouri(long long fval) {
	long long zeroes = 0;
	for (int i = 1; i < 18; ++i) {
		zeroes += fval / pow5[i];
	}
	return zeroes;
}	

long long bsearch(long long left, long long right) {
	if (left != right) {
		long long mid = (left + right) / 2;
		long long nr = zerouri(mid);
		if (nr == p) return mid;
		else if (nr < p) return bsearch(mid + 1, right);
		else return bsearch(left, mid - 1);
	}
}


int main() {
	int n;

	pow5[0] = 1;
	for (int i = 1; i <= 18; ++i) {
		pow5[i] = 5 * pow5[i - 1];
	}
	fin >> p;
	long long nr = bsearch(1, 100000);
	while (nr % 5 != 0) nr--;
	
	if(nr!=0)	fout << nr;
	else fout << 1;
	return 0;
}