Cod sursa(job #1399189)

Utilizator DysKodeTurturica Razvan DysKode Data 24 martie 2015 17:03:13
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;

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

int src,Left,Right,Middle,nrCurZero,lastMiddle;

int _NrZero(int x)
{
    int s = 0;
    while( x != 0 )
    {
        s += x / 5;
        x /= 5;
    }

    return s;
}


int main()
{
    fin>>src;

    if( src == 0 )
    {
        fout<<1;
        return 0;
    }

    Left = 1;
    Right = 500000000;
    while( Left <= Right )
    {
        Middle = ( Left + Right ) / 2;

        nrCurZero = _NrZero( Middle );

        while( nrCurZero == 0 )
        {
            --Middle;
            nrCurZero = _NrZero( Middle );
        }

        if( nrCurZero == src )
        {
            fout<<Middle;
            return 0;
        }

        if( lastMiddle == Middle )
            break;

        if( nrCurZero > src )
            Right = Middle;
        else
            Left = Middle;

        lastMiddle = Middle;
    }

    fout<<-1;

return 0;
}