Cod sursa(job #1481193)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 3 septembrie 2015 23:55:58
Problema Factorial Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 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 + 1;
    while (stanga < dreapta - 1) {
        mijloc = (stanga + dreapta) / 2;
        f = zeroFact(mijloc);

        if (f < P) {
            stanga = mijloc;
        }
        else {
            dreapta = mijloc;
        }
        cout << mijloc << " " << stanga << " " << dreapta << " " << f << "\n";
    }

    cout << zeroFact(mijloc) << " " << P << " " << mijloc;
    if(zeroFact(mijloc) == P) {
        fout << mijloc;
    }
    else {
        fout << "-1";
    }

    return 0;
}