Cod sursa(job #2626196)

Utilizator ihorvaldsTudor Croitoru ihorvalds Data 6 iunie 2020 12:29:41
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <iostream>
#include <cmath>

int get_zeroes(unsigned int n) {

    int zeroes = 0, mult5 = 5;

    while (n / mult5) {
        zeroes += n / mult5;
        mult5 *= 5;
    }

    return zeroes;
}

unsigned int search(int zeroes, unsigned int begin, unsigned int end) {
    if (begin >= end) {
        return -1;
    }

    unsigned int mid = (begin + end) / 2;
    int current_zeroes = get_zeroes(mid);
    if (current_zeroes == zeroes)
        return mid;
    if (current_zeroes > zeroes)
        return search(zeroes, begin, mid);
    
    return search(zeroes, mid + 1, end);
}

int main()
{
    std::ifstream f("fact.in");
    std::ofstream g("fact.out");

    int zeroes;
    f >> zeroes;
    if (!zeroes) {
        g << 1 << "\n";
        return 0;
    }
    unsigned int i = 1, j = 2000000000;
    g << (search(zeroes, i, j) / 5) * 5 << "\n";
}