Cod sursa(job #2868651)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 11 martie 2022 08:50:49
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>

using namespace std;

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

long long nrc0 (long long n)
{
    long long p=5;
    long long cnt = 0;
    while (p<=n)
        cnt += n/p, p*=5;
    return cnt;
}

bool p5 (long long n)
{
    if (n==1)
        return false;
    while (n%5==0)
        n/=5;
    if (n==1)
        return true;
    return false;
}

int main()
{
    long long n;
    in >> n;
    if (n==0)
    {
        out << 1;
        return 0;
    }
    if (p5(n))
    {
        out << -1;
        return 0;
    }
    long long l=1, r=10e9, mid;
    while (l<r)
    {
        mid = (l+r)/2;
        long long nrc = nrc0(mid);
        if (nrc >= n)
            r = mid;
        else
            l = mid + 1;
    }
    if (nrc0(r) != n)
    {
        out << -1;
        return 0;
    }
    out << r;
    return 0;
}