Cod sursa(job #2191106)

Utilizator HerddexJinga Tudor Herddex Data 1 aprilie 2018 17:29:59
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>

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

unsigned long numberOfFives(unsigned long N)
{
    unsigned long result = 0, divider = 5;

    while(N/divider > 0)
    {
        result += N/divider;
        divider *= 5;
    }

    return result;
}

int main()
{
    unsigned long P,lowerN,higherN,averageN,num5;

    fin>>P;

    higherN = P*5;
    lowerN = P*4;
    averageN = (higherN + lowerN) / 2;

    num5 = numberOfFives(averageN);
    while(num5!=P)
    {
        if(num5<P)
        {
            lowerN = averageN;
            if(averageN == (higherN + lowerN) / 2)
                averageN = (higherN + lowerN) / 2 + 1;
            else
                averageN = (higherN + lowerN) / 2;
        }
        else
        {
            higherN = averageN;
            if(averageN == (higherN + lowerN) / 2)
                averageN = (higherN + lowerN) / 2 + 1;
            else
                averageN = (higherN + lowerN) / 2;
        }
        num5 = numberOfFives(averageN);
    }

    averageN -= averageN%5;

    if(averageN == 0)
        fout<<1<<'\n';
    else
        fout<<averageN<<'\n';

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