Cod sursa(job #1107779)

Utilizator smaraldaSmaranda Dinu smaralda Data 14 februarie 2014 11:44:06
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<math.h>
#include<stdio.h>

int p;

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

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

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