Cod sursa(job #2115006)

Utilizator damian.belesDamian-Teodor Beles damian.beles Data 26 ianuarie 2018 10:24:35
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

int zeroCounter(int iNumber) {
    int iPower = 5, iCounter = 0;
    while (iNumber / iPower) {
        iCounter += iNumber / iPower;
        iPower *= 5;
    }
    return iCounter;
}

int exponentialSearch(int iZeros) {
    int iCurrent, iCurr;
    for (iCurrent = 1; zeroCounter(iCurrent) < iZeros; iCurrent <<= 1); /// Exponential Search find interval
    for (iCurr = iCurrent >> 1; zeroCounter(iCurr) < iZeros; iCurr++); /// Found interval
    return zeroCounter(iCurr) == iZeros? iCurr : -1; /// Check if such a number exists
}

int main() {
    int iZeros;
    std::ifstream fin ("fact.in");
    fin >> iZeros;
    std::ofstream fout("fact.out");
    if (iZeros == 0)
        fout << "1\n";
    else fout << exponentialSearch(iZeros) << "\n";
    fout.close();
    return 0;
}