Cod sursa(job #1399181)

Utilizator DysKodeTurturica Razvan DysKode Data 24 martie 2015 16:57:45
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

using namespace std;

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

int src,Left,Right,Middle,nrCurZero;

int _NrZero(int x)
{
    int s = 0;
    while( x % 5 == 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( nrCurZero > src )
            Right = Middle - 5;
        else
            Left = Middle + 5;
    }

    fout<<-1;

return 0;
}