Cod sursa(job #1739064)

Utilizator Bulgaru_Robert_Razvan_323CBBulgaru Robert Razvan Bulgaru_Robert_Razvan_323CB Data 8 august 2016 15:45:51
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <iostream>
#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 nrZeros(long long x) {
	long long nr=0;
	for (long long i=5;i<=x;i*=5)
		nr+=x/i;
	return nr;
}

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

		if (nrZeros(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";
	return 0;
}