Cod sursa(job #2680854)

Utilizator overstainedVlad Radu overstained Data 4 decembrie 2020 15:53:19
Problema Factorial Scor 20
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h> 

int numbersOfZero(int n) {
    int prod = 5;
    int num = 0;
    while(n/prod != 0) {
        num += n/prod;
        prod *= 5;
    }
    return num;
}

int binarySearch(int no) {
    if(no == 0) {
        return 1;
    }

    int low = 0;
    int high = 10000000;

    while(low < high) {
        int mid = low+(high-low)/2;
        if (mid % 10 < 5) {
            mid -= mid % 10;
        } else {
            mid = (mid / 10) * 10 + 5;
        }
        int nosOfZero = numbersOfZero(mid);
        if(nosOfZero == no) {
            return mid;
        }
        if(no < nosOfZero) {
            high = mid;
        } else {
            low = mid;
        }
    }
    return -1;
}

int main()
{

    freopen("fact.in", "r", stdin);
    freopen("fact.out", "w", stdout);
    
    int n;
    scanf("%d", &n);

    int num = binarySearch(n);



    printf("%d\n", n == 0? 1: num);
    return 0;
}