Cod sursa(job #1481204)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 4 septembrie 2015 00:05:28
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int zeroFact(int n) {
    int s = 0;

    while (n != 0) {
        s += n / 5;
        n /= 5;
    }
    return s;
}


int main() {
    int P, stanga, dreapta, mijloc, f;
    fin >> P;

    if (P == 0) {
        fout << 1 << "\n";
        return 0;
    }

    stanga = 0;
    dreapta = 5 * P;
    while (stanga < dreapta) {
        mijloc = (stanga + dreapta) / 2;
        f = zeroFact(mijloc);

        if (f < P) {
            stanga = mijloc + 1;
        }
        else if (f > P) {
            dreapta = mijloc - 1;
        }
        else {
            while (mijloc % 5) {
                --mijloc;
            }
            fout << mijloc;
            return 0;
        }
    }
    fout << "-1";

    return 0;
}