Cod sursa(job #1107784)

Utilizator smaraldaSmaranda Dinu smaralda Data 14 februarie 2014 11:48:23
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<math.h>
#include<stdio.h>
#include<algorithm>
using namespace std;

int p;

int ok (int n, int k) {
    int ans = 0, pk;

    pk = 1;
    while(pk <= n) {
        pk *= k;
        ans += n / pk;
    }
    return ans;
}

int bs (int left, int right) {
    int mid, last;
    while(left <= right) {
        mid = (left + right) / 2;
        if(ok(mid, 2) >= p && ok(mid, 5) >= p)
            last = mid,
            right = mid - 1;
        else
            left = mid + 1;
    }

    if(min(ok(last, 2), ok(last, 5)) != p)
        last = -1;
    return last;
}

int main() {
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);

    scanf("%d",&p);
    printf("%d",bs(1, 1e9));

    return 0;
}