Cod sursa(job #2388173)

Utilizator oogaboogauvuvwevwevwe onyetenyevwe ugwemubwem ossas oogabooga Data 25 martie 2019 18:47:20
Problema Factorial Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

const uint64_t MX = 100000000/5 + 1;

int main()
{
    uint64_t P, Z=0;
    vector <uint64_t> v(1, 0);
    in>>P;
    if(P == 0) { out<<1; return 0;}

    for(uint64_t i = 5; v.size() != 31; i *= 5) v.push_back(i);

    for(uint64_t i = 1; i <= MX; ++i)
    {
        ++Z;
        int64_t l = 1, r = 30, p = -1;
        while(l <= r)
        {
            int64_t m = (l + r) / 2;
            if(v[m] == i) {p = m; break;}
            else if(v[m] < i) l = m + 1;
            else r = m - 1;
        }
        if(p != -1)
        {
            Z += p;
        }

        if(Z == P)
        {
            out<<i*5;
            return 0;
        }
        else if(Z > P)
        {
            out<<-1;
            return 0;
        }
    }

    return 0;
}