Cod sursa(job #2079928)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 2 decembrie 2017 00:03:25
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

void solve() {
    int number_of_zeroes;
    cin >> number_of_zeroes;

    auto count_zeroes = [](int64_t n) {
        int64_t power_of_5 = 5;
        int res = 0;
        while (power_of_5 <= n) {
            res += n / power_of_5;
            power_of_5 *= 5;
        }
        return res;
    };

    int left = 1, right = number_of_zeroes * 5;
    while (left <= right) {
        int middle = left + (right - left) / 2;
        int current = count_zeroes(middle);

        if (current >= number_of_zeroes)
            right = middle - 1;
        else
            left = middle + 1;
    }

    if (count_zeroes(left) == number_of_zeroes)
        cout << left << endl;
    else
        cout << -1 << endl;
}

int main() {
    assert(freopen("fact.in", "r", stdin));
    assert(freopen("fact.out", "w", stdout));
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);

    solve();

    return 0;
}