Cod sursa(job #2622511)

Utilizator MevasAlexandru Vasilescu Mevas Data 1 iunie 2020 13:49:53
Problema Factorial Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;

int countZeros(long long x) {
    int sum = 0;
    int k = 1;
    int p5 = 5;

    while (p5 <= x) {
        sum += x / p5;
        p5 = pow(5, ++k);
    }

    return sum;
}

int findAns(int x) {
    int left = 0, right = 400000015;

    while (left <= right) {
        int mid = (left + right ) / 2;
        int zeroes = countZeros(mid);

        if (zeroes == x) {
            while(countZeros(mid - 1) == x) {
                mid--;
            }

            return mid;
        }

        if (zeroes < x) {
            left = mid + 1;
            continue;
        }

        if (zeroes > x) {
            right = mid - 1;
            continue;
        }
    }

    return -1;
}

int main() {
    ifstream fin("fact.in");
    ofstream fout("fact.out");

    int n;

    fin >> n;

    cout << findAns(n);
}