Cod sursa(job #2137003)

Utilizator AndreiBadescuBadescu Andrei-Octavian AndreiBadescu Data 20 februarie 2018 15:19:38
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;

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

int n;

int nrZero ( int x )
{
    int s = 0, p = 5;

    while ( p <= x )
    {
        s += x / p;
        p *= 5;
    }

    return s;
}

int binSearch ( int n )
{
    int t, mij, st = 0, dr = 100000000;

    while ( st <= dr )
    {
        mij = (st + dr) / 2;
        t = nrZero(mij);

        if ( t >= n )
            dr = mij - 1;
        else
            st = mij + 1;
    }

    return st;
}

int main()
{
    fin >> n;

    if ( n == 0 )
        fout << 1;
    else
    {
        int t = binSearch (n);

        if ( nrZero(t) != n )
            fout << -1;
        else
            fout << t;
    }
}