Cod sursa(job #2344492)

Utilizator alexradu04Radu Alexandru alexradu04 Data 15 februarie 2019 10:07:22
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
//long long put[]={1,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125};
long long p;

long long verif (long long n)
{
    long long  sum=0;
    long long  fact=5;
    while(n>=fact)
    {
        sum+=n/fact;
        fact=5*fact;
    }
    if(sum>p)
        return 1;
    if(sum<p)
        return -1;
    if(sum==p)
        return 0;
}
int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    long long ans=-1;
    scanf("%d",&p);
    long long st=1;
    long long dr=500000000;
    if(p==0)
    {
        printf("1");
        return 0;
    }
    while(st<=dr)
    {
        long long mid=st+dr;mid/=2;
        if(verif(mid)==1)
        {
            dr=mid-1;
        }
        else
        if(verif(mid)==-1)
            st=mid+1;
        else
        if(verif(mid)==0)
            {
                ans=mid;
                dr=mid-1;
                //break;
            }
    }
    printf("%lld",ans);
    return 0;
}