Cod sursa(job #2345381)

Utilizator MarutBrabete Marius Stelian Marut Data 16 februarie 2019 12:07:52
Problema Factorial Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
using namespace std;
int legendre(int n)
{
    int p=5,p1=5,s=0;
    while(p1<n)
    {
        s+=n/p1;
        p1*=p;
    }
    return s;
}
int bs(int st, int dr, int val)
{
    int med=(st+dr)/2;
    while(st<=dr)
    {
        med=(st+dr)/2;
        if(legendre(med)>val) dr=med-1;
            else if(legendre(med)<val) st=med+1;
                else return med;
    }
    return -1;
}
int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    int p,ans;
    scanf("%d",&p);
    if(p==0) printf("1");
        else if(p==1) printf("5");
            else
            {
    ans=bs(1,2100000000,p);
    while(legendre(ans)==p)
        ans--;
    ans++;
    printf("%d",ans);
            }
    return 0;
}