Cod sursa(job #2254009)

Utilizator pinteastefanPintea Teodor Stefan pinteastefan Data 4 octombrie 2018 18:14:13
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

int numbrOfZeros(int x){
    int nr = 0, put = 5;
    while(x >= put){
        nr += x / put;
        put *= 5;
    }
    return nr;
}

int main() {
    ifstream f("fact.in");
    ofstream g("fact.out");
    int n;
    int poz = -1;
    f >> n;
    int stanga, dreapta;
    stanga = 1;
    dreapta = n * 5;
    if (n == 0){
        g << 1;
        return 0;
    }
    while (stanga <= dreapta){
        int mijloc = (stanga + dreapta) / 2;
        if (numbrOfZeros(mijloc) == n){
            poz = mijloc;
            break;
        } else if (numbrOfZeros((mijloc)) < n){
            stanga = mijloc + 1;
        } else if (numbrOfZeros(mijloc) > n){
            dreapta = mijloc - 1;
        }
    }
    if (poz == -1){
        g << poz;
        return 0;
    }
    poz = poz - poz % 5;
    g << poz;
    return 0;
}