Cod sursa(job #1883413)

Utilizator icansmileSmileSmile icansmile Data 17 februarie 2017 22:51:05
Problema Factorial Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

long long number_of_zero(long long n){
    long long count = 0;
    long long power_of_five = 5;

    while(power_of_five <= n){
        count = count + n/ power_of_five;
        power_of_five = power_of_five*5;
    }

    return count;
}

long long find_number(long long p, long long high, long long low){
    long long mid;
    long long result = -1;

    if( p < 5 )
        return 1;

    while(low <= high) {
        mid = low + ( high - low )/2;
        if(number_of_zero(mid) <= p){
            low = mid + 1;
            result = mid;
        }
        else{
            high = mid - 1;
        }
    }
    return (result - result%5);
}

int main() {
    long long p;

    ifstream file_in;
    ofstream file_out;
    file_in.open("fact.in");
    file_out.open("fact.out");

    file_in>>p;
    file_out << find_number(p,10e9,0);

    file_in.close();
    file_out.close();

    return 0;
}