Cod sursa(job #2141943)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 24 februarie 2018 17:25:16
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>

using namespace std;

int exp5(int x)
{
    if(x == 1 || x == 0)
        return 0;
    long long int p = 5;
    int s = 0;
    while(p <= 1LL*x)
    {
        s += (int)(x/p);
        p *= 5;
    }
    return s;
}

int bs(int x)
{
    int st = 1;
    int dr = 2000000000;
    int med;
    int ans = -1;
    while(st <= dr)
    {
        med = 1LL*(st+dr)/2;
        if(exp5(med) < x){
            st = med+1;
        }
        else if(exp5(med) >= x){
            dr = med-1;
            ans = med;
        }
    }
    return ans;
}

int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    int n;
    scanf("%d",&n);
    printf("%d",bs(n));
    return 0;
}