Cod sursa(job #1799679)

Utilizator stefanmereutaStefan Mereuta stefanmereuta Data 6 noiembrie 2016 17:24:53
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <fstream>

using namespace std;

int apar(int n) {
    int put = 5, nr = 0;

    while (n >= put) {
        nr += n / put;
        put *= 5;
    }

    return nr;
}

int cautbin(int st, int dr, int n) {
    if (st > dr) {
        return -1;
    }

    int mid = (st + dr) / 2;

    if (apar(mid) < n) {
        return cautbin(mid + 1, dr, n);
    } else if (apar(mid) > n) {
        return cautbin(st, mid - 1, n);
    } else {
        return mid;
    }
}

int main()
{
    ifstream fin("fact.in");
    ofstream fout("fact.out");

    int P, N;

    fin >> P;

    if (P == 0) {
        N = 1;
    } else {
        N = cautbin(1, 5 * P, P);

        if (N != -1) {
            N = N / 5 * 5;
        }
    }

    fout << N;

    fin.close();
    fout.close();

    return 0;
}