Cod sursa(job #2338923)

Utilizator xtreme77Patrick Sava xtreme77 Data 7 februarie 2019 23:45:34
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <cassert>

using namespace std;

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

long long zeros (long long n)
{
    long long s = 0;
    long long p = 5;
    while (p <= n)
    {
        s += n / p;
        p *= 5;
    }
    return s;
}

int main()
{
    long long p;
    cin >> p;
    if (p == 0)
    {
        cout << 1 << '\n';
        return 0;
    }
    long long st = 1;
    long long sol = 0;
    long long dr = p * 5;
    while (st <= dr)
    {
        long long mij = (st + dr) / 2LL;

        if (p <= zeros(mij))
        {
            sol = mij;
            dr = mij - 1;
        }
        else st = mij + 1;
    }
    if (zeros(sol) == p) {
        assert (sol == sol - sol % 5);
        cout << sol;
    }
    else cout << -1;
    return 0;
}