Cod sursa(job #2325961)

Utilizator crion1999Anitei cristi crion1999 Data 23 ianuarie 2019 11:29:23
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda simulare_preoli Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream fi("fact.in");
ofstream fo("fact.out");

long long solve(long long val)
{
    long long put = 5;
    long long amount = 0;
    while(put <= val)
    {
        amount += (val/put);
        put *= 5;
    }
    return amount;
}

int main()
{
    long long zeros;
    fi>>zeros;
    fi.close();
    long long n = zeros;
    if(zeros == 0)
    {
        fo<<1;
        fo.close();
    }
    else
    {
        long long st = 1;
        long long dr = 500000000;
        while(st < dr)
        {
            long long mid = (st + dr) /2;
            long long solvent = solve(mid);
            if(solvent < zeros)
            {
                st = mid + 1;
            }
            if(solvent > zeros)
            {
                dr = mid - 1;
            }
            else if(solvent == zeros)
            {
                while(solve(mid) == zeros)
                    mid--;
                mid++;
                fo<<mid;
                return 0;
            }
        }
        fo<<-1;
    }

}