Cod sursa(job #3342856)

Utilizator TimofeiFilipTimofei Filip Emanuel TimofeiFilip Data 25 februarie 2026 21:48:11
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 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;
    result = -1;
    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);
    int result = get_factorial_with_zeros(n);
    if(result > 0){
        printf("%d", result);
    }
    else{
        printf("-1");
    }
    return 0;
}