Cod sursa(job #2258940)

Utilizator preda.andreiPreda Andrei preda.andrei Data 12 octombrie 2018 17:43:44
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>

int CountZeros(int num)
{
    int count = 0;
    int power = 5;

    while (power > 0 && power <= num) {
        count += num / power;
        power *= 5;
    }
    return count;
}

int main()
{
    FILE *fin = fopen("fact.in", "r");
    FILE *fout = fopen("fact.out", "w");

    int zeros_wanted;
    fscanf(fin, "%d", &zeros_wanted);

    int left = 1;
    int right = 1e9;
    int res = -1;

    while (left <= right) {
        int mid = left + (right - left) / 2;
        int zeros = CountZeros(mid);

        if (zeros > zeros_wanted) {
            right = mid - 1;
        } else if (zeros < zeros_wanted) {
            left = mid + 1;
        } else {
            if (mid < res || res == -1) {
                res = mid;
            }
            right = mid - 1;
        }
    }

    fprintf(fout, "%d\n", res);
    return 0;
}