Cod sursa(job #1591977)

Utilizator razvandRazvan Dumitru razvand Data 6 februarie 2016 22:20:31
Problema Factorial Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

long long pw5[15];

int nrZ(long long n) {
    int r = 0;
    int r2 = 1;
    int i = 1;
    while(r != r2) {
        r2 = r;
        r += n/pw5[i];
        i++;
    }
    return r;
}

int bin(long nr, int st, int dr) {

    int mid = (st+dr)/2;
    int z = nrZ(mid);

    if(st >= dr)
        return -1;

    if(nr > z)
        return bin(nr, mid-1, dr);
    if(nr < z)
        return bin(nr, st, mid+1);

    while(z == nrZ(mid))
        mid--;
    return mid+1;

}

int main() {

    long a;
    in >> a;

    if(a == 0) {
        out << 1;
        return 0;
    }

    pw5[1] = 5;
    for(int i = 2; i <= 14; i++)
        pw5[i] = pw5[i-1]*5;
    out << bin(a, 0, 20000000000);

    return 0;

}