Cod sursa(job #1110772)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 18 februarie 2014 13:09:24
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
/// Craciun Catalin
///  Fact
///   Cautare binara
///    www.infoarena.ro/problema/fact
#include <fstream>
#include <iostream>

#define UPPER_LIMIT 500000000

using namespace std;

ifstream f("fact.in");
ofstream g("fact.out");

long p;

long zerouri(long q)
{
    long cifre=0;
    while (q/5!=0)
    {
        cifre+=q/5;
        q/=5;
    }

    return cifre;
}

long cautBin(long st, long dr)
{
    long m;

    while (st<=dr)
    {
        m=(st+dr)/2;
        long o=zerouri(m);

        if (o<p)
            st=m+1;
        else if (o>p)
            dr=m-1;
        else if (o==p)
        {
            while (zerouri(m)==p)
                m--;
            m++;
            return m;
        }
    }

    return -1;
}

int main()
{
    f>>p;
    f.close();

    if (p==0)
        g<<1<<'\n';
    else if (p==1)
        g<<5<<'\n';
    else
        g<<cautBin(0, UPPER_LIMIT);

    g.close();

    return 0;
}