Cod sursa(job #1344633)

Utilizator iuliagalataniulia galatan iuliagalatan Data 16 februarie 2015 21:13:13
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;
int Nr_Zero(long long x);
int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");
    int p;
    long long ls, ld, mijl, f, nr;
    int nrzero = 0;
    bool gasit = false;
    fin >> p;
    if(p == 0) fout << 1;
    else
    {
        ls = 0;
        ld = 100000001;
        while( ls <= ld && gasit == false)
        {
            mijl = (ls + ld)/2;
            nrzero = Nr_Zero(mijl);
            if(nrzero == p)
            {
                gasit = true;
                nr = mijl;
            }
            else
                if( nrzero < p) ls = mijl + 1;
                else ld = mijl -1;
        }

        if(gasit == false) fout << -1;
        else
        {
            nrzero = Nr_Zero(nr);
            while(nrzero == p)
            {
                nr= nr-1;
                nrzero = Nr_Zero(nr);
            }
            fout << nr+1;
        }
    }

    fin.close();
    fout.close();
    return 0;
}

int Nr_Zero(long long x)
{
    int zero = 0;
    long long f = 5;
    while( f <= x )
    {
        zero = zero + x/f;
        f = f * 5;
    }
    return zero;
}