Cod sursa(job #1251064)

Utilizator horatiu11Ilie Ovidiu Horatiu horatiu11 Data 28 octombrie 2014 21:43:47
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
//horatiu11
# include <cstdio>
# include <algorithm>
# define MAX 400000015
using namespace std;
int p,nr;
inline int smallest_m(int m)
{
    while(m%5)m--;
    return max(m,1);
}
inline int nr_0(int x)
{
    int b=5,count=0;
    while(x/b!=0)count+=x/b,b*=5;
    return count;
}
int main()
{
    int st,dr,m;
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d",&p);
    st=1;dr=MAX;
    while(st<=dr)
    {
        m=(st+dr)>>1;
        nr=nr_0(m);
        if(nr==p)
        {
            printf("%d\n",smallest_m(m));
            return 0;
        }
        else if(nr>p)dr=m-1;
        else st=m+1;
    }
    printf("%d\n",-1);
    return 0;
}