Cod sursa(job #1901384)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 3 martie 2017 22:05:26
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

const int S_MAX = 1e10;

int p, solution;

void read() {
    ifstream fin("fact.in");

    fin >> p;

    fin.close();
}

int powers(int number) {
    int power = 1, sum = 0;
    while (power * 5 <= number) {
        power *= 5;
        sum += number / power;
    }

    return sum;
}

void binarySearch(int left, int right) {
    while (left <= right) {
        int middle = (left + right) >> 1;
        int numberZero = powers(middle);
        if (numberZero == p)
            {p =  middle; break;}
        else if (numberZero > p)
            right = middle - 1;
        else
            left = middle + 1;
    }
}

void write() {
    ofstream fout("fact.out");

    if (p == 0)
       p = 1;
    else {
        binarySearch(1, S_MAX);
        p -= p % 5;
        if (p == 0)
            p = -1;
    }

    fout << p;

    fout.close();
}

int main() {
    read();
    write();
    return 0;
}