Cod sursa(job #2852831)

Utilizator Cezar211Popoveniuc Cezar Cezar211 Data 19 februarie 2022 17:02:38
Problema Factorial Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

#define ll long long
using namespace std;

inline void fast() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
}

int P;

ll nrZeros(ll N) {
    // number of zeros of N!
    ll nrZ = 0, crtP = 5;
    for (int p = 1; p <= 23; p++) {
        nrZ += N / crtP;
        crtP *= 5;
    }
    return nrZ;
}

int main() {
    fast();
    ifstream fin ("fact.in");
    fin >> P;
    ll st = 1, dr = LLONG_MAX;
    ll ans = -1;
    while (st <= dr) {
        ll mid = (st + dr) / 2;
        ll nrZMid = nrZeros(mid);
        if (nrZMid == P) {
            ans = mid;
            dr = mid - 1;
        } else if (nrZMid < P)
            st = mid + 1;
        else dr = mid - 1;
    }
    ofstream fout ("fact.out");
    fout << ans;
    return 0;
}