Cod sursa(job #785813)

Utilizator 2dorTudor Ciurca 2dor Data 9 septembrie 2012 21:48:53
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <cmath>
#include <iostream>
using namespace std;

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

long long i, x, p, zero, hi, lo, mid, patr[14];
int main() {
    fin >> p;
    fin.close();
    for (i = 1; i < 14; i++) {
        patr[i] = pow(5, i);
        //cout << patr[i] << '\n';
    }
    lo = 0;
    hi = 500000005;
    while (hi - lo > 1) {
        mid = (hi + lo) / 2;
        i = 1;
        zero = 0;
        //cout << "mid=" << mid << ' ';
        while (mid / patr[i] >= 1) {
            zero += mid / patr[i];
            //cout << "zero=" << zero << '\n';
            i++;
        }
        if (zero == p)
            x = mid;
        if (zero < p)
            lo = mid;
        else
            hi = mid;
        //cout << mid << ' ';
    }
    fout << x;
    fout.close();
    return 0;
}