Cod sursa(job #2624728)

Utilizator iuliangal186Gal Iulian iuliangal186 Data 5 iunie 2020 11:15:44
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int numarZero(long x)
{
    int nr = 0;
    int k = 5;
    while(k <= x)
    {
        nr += x/k;
        k *= 5;
    }
    return nr;
}

long factorial(long n)
{
    if(n == 0)
        return 1;
    else
    {
        long s = 0;
        long d = n * 5;
        int ok = 0;

        while(s <= d)
        {
            long m = (s + d) / 2;
            if(numarZero(m) <= n)
            {
                ok = m;
                s = m + 1;
            }
            else
            {
                d = m - 1;
            }
        }
        if(numarZero(ok) == n)
            return ok - ok % 5;
        else
            return -1;
    }
}

int main()
{
    long n;
    fin >> n;
    fout << factorial(n);
    return 0;
}