Cod sursa(job #2181278)

Utilizator rrobertBulgaru Robert rrobert Data 21 martie 2018 16:13:45
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>
#include <climits>

using namespace std;

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

long long N,P,low,high,mid;

bool found=false;

long long nr_zeros(long long n) {
	long long nr=0;

	while (n>1) {
		nr+=n/5;
		n/=5;
	}

	return nr;
}

void search(long long low,long long high,long long p) {
	while (low<=high) {
		mid=low+(high-low)/2;
		if (p==nr_zeros(mid)) {
			found=true;
			N=mid;
		}

		if (nr_zeros(mid)<p)
			low=mid+1;
		else
			high=mid-1;

	}
}

int main() {
	in>>P;

	search(1,LONG_MAX,P);
	if (found)
		out<<N;
	else
		out<<"-1";

	in.close();
	out.close();
	return 0;
}