Cod sursa(job #2887047)

Utilizator rapidu36Victor Manz rapidu36 Data 8 aprilie 2022 18:51:06
Problema Factorial Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <stdlib.h>
#define ST 1
#define DR (1 << 29)

int nr_zero_fact(int n)
{
    int nr = 0;
    while (n >= 5)
    {
        nr += (n /= 5);
    }
    return nr;
}

int caut_binar(int p)
{
    ///caut binar cel mai mic n al carui factorial se termina cu CEL PUTIN p zerouri
    int st = ST, dr = DR, rez = DR + 1;
    while (st <= dr)
    {
        int m = (st + dr) / 2;
        if (nr_zero_fact(m) >= p)
        {
            rez = m;
            dr = m - 1;
        }
        else
        {
            st = m + 1;
        }
    }
    return rez;
}

int main()
{
    FILE *in, *out;
    in = fopen("fact.in", "r");
    out = fopen("fact.out", "w");
    int p;
    fscanf(in, "%d", &p);
    fclose(in);
    int n = caut_binar(p);
    if (nr_zero_fact(n) != p)
    {
        n = -1;
    }
    fprintf(out, "%d\n", n);
    fclose(out);
    return 0;
}