Cod sursa(job #2185801)

Utilizator DawlauAndrei Blahovici Dawlau Data 24 martie 2018 21:36:45
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
using namespace std;

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

typedef long long ll;

inline ll factZerosCnt(const ll &N){

    ll fivePwr = 5, factZeros = 0;

    while(fivePwr <= N){

        factZeros += N / fivePwr;
        fivePwr *= 5;
    }

    return factZeros;
}

inline void binSearch(const ll &P, ll &N){

    N = -1;

    ll low = 1, high = 5e8, mid, factZeros;

    while(low <= high){

        mid = (low + high) >> 1;

        factZeros = factZerosCnt(mid);

        if(factZeros == P){

            N = mid;
            high = mid - 1;
        }
        else if(factZeros < P)
            low = mid + 1;
        else
            high = mid - 1;
    }
}

int main(){

    ll N, P;

    fin >> P;
    binSearch(P, N);
    fout << N;
}