Cod sursa(job #1977693)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 5 mai 2017 21:25:31
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
/*
    solutie bazata pe cautare binara care foloseste o functie de calculare
    zerouri factorial si se opreste atunci cand zero(mid) == P

*/

#include <fstream>

using namespace std;

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



unsigned long int zero(int k) {
	long long int sum = 0;
	while (k) {
		sum += k / 5;
		k /= 5;
	}
	return sum;
}
int P;
unsigned long int cautbin(){
    unsigned long lo = 0, hi = LLONG_MAX,mid;
    while(lo <= hi){
        mid = (hi - lo)/2 + lo;
        long best = zero(mid);
        if(best == P){
            return mid - mid % 5;
        }else if(best < P){
            lo = mid + 1 ;
        }else{
            hi = mid - 1;
        }
    }
    return -1;
}

int main()
{
    in>>P;
    if(P){
        out<<cautbin();
    }else{
        out<<"1";
    }


}