Cod sursa(job #1181416)

Utilizator AnduuFMI Alexandru Banu Anduu Data 2 mai 2014 18:11:25
Problema Factorial Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
using namespace std;

int nrzero (int mid) {

    int nr5 = 5, nrz = 0;

    while (nr5 <= mid) {
        nrz += mid / nr5;
        nr5 *= 5;
    }

    return nrz;
}

int main () {

    int p, st = 1, dr, mid, nrz;

    FILE *in = fopen ("fact.in", "r");
    fscanf (in, "%d", &p);
    fclose (in);

    if (p == 0) {
        FILE *out = fopen ("fact.out", "w");
        fprintf (out, "1");
        fclose (out);
        return 0;
    }

    dr = p * 5;
    FILE *out = fopen ("fact.out", "w");
    while (st <= dr) {
        mid = (st + dr) / 2;
        nrz = nrzero (mid);
        if (nrz == p) {
            fprintf (out, "%d\n", mid);
            fclose (out);
            return 0;
        }
        else if (nrz < p)
                st = mid + 1;
            else dr = mid - 1;
    }
    fprintf (out, "-1\n");
    fclose (out);
    return 0;
}