Cod sursa(job #2132409)

Utilizator razvan242Zoltan Razvan-Daniel razvan242 Data 15 februarie 2018 19:12:38
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <climits>

using namespace std;

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

long long p;

inline long long nrZerouri(long long n) {
    long long nr = 0;
    for (long long i = 5; i <= n; i *= 5)
        nr += n / i;
    return nr;
}

int main()
{
    fin >> p;

    long long raspuns = -1;
    long long st = 1, dr = LLONG_MAX;
    long long mid;

    while (st <= dr) {
        mid = st + (dr - st) / 2; // daca aducem la acelasi numitor da (st + dr) / 2

        if (nrZerouri(mid) >= p) {
            raspuns = mid;
            dr = mid - 1;
        }
        else
            st = mid + 1;
    }

    if (nrZerouri(raspuns) == p)
        fout << raspuns;
    else
        fout << -1;
    return 0;
}