Cod sursa(job #1243594)

Utilizator hanganflorinHangan Florin hanganflorin Data 16 octombrie 2014 01:38:19
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;

ifstream is("fact.in");
ofstream os("fact.out");

int st = 1, dr = 1000000000;
int p, v, m;
const int d1[] = { 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625 };
const int d2[] = { 0, 1, 6, 31, 156, 781, 3906, 19531, 97656, 488281, 24414406 };

int Calculeaza(int x);

int main()
{
    is >> p;
    if ( p == 0 )
        os << 1;
    else if ( p == 5 )
        os << -1;
    else
    {
        while ( st <= dr )
        {
            m = st + (dr-st)/2;
            v = Calculeaza(m);
            if ( v >= p )
                dr = m-1;
            else
                st = m+1;

        }
        os << st;
    }
    is.close();
    os.close();
    return 0;
}
int Calculeaza(int x)
{
    for ( int i = 0; i < 9; ++i )
        if ( d1[i] <= x && d1[i+1] > x )
            return ((x / 5) + d2[i]);
    if ( x >= 9765625 )
        return ((x / 5) + 9);
}