Cod sursa(job #3342855)

Utilizator TimofeiFilipTimofei Filip Emanuel TimofeiFilip Data 25 februarie 2026 21:47:03
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>

using namespace std;


int ApplyLegendre(int factorial, int factor){
    int result = 0;
    int power = factor;
    while(power <= factorial){
        result += (factorial / power);
        power *= factor;
    }
    return result;
}


int get_factorial_with_zeros(int zeros_at_end){
    if(zeros_at_end == 0) return 1;
    int left, right, result;

    left = 1;
    right = 1e9;
    while(left <= right){
        int middle = (left + right) / 2;
        int zeros_middle = ApplyLegendre(middle, 5);
        if(zeros_middle == zeros_at_end){
            result = middle;
            right = middle - 1;
        }
        else if(zeros_middle > zeros_at_end)
            right = middle - 1;
        else
            left = middle + 1;
    }
    return result;
}

int main()
{
    freopen("fact.in", "r", stdin);
    freopen("fact.out", "w", stdout);

    int n;
    scanf("%d", &n);
    printf("%d", get_factorial_with_zeros(n));
    return 0;
}