Cod sursa(job #3033364)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 23 martie 2023 19:59:51
Problema Factorial Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
ifstream cin("fact.in");
ofstream cout("fact.out");
long long  gasit,p,n,st,dr,mid;
long long nr_zerouri(long long  x)
{
   long long  pt=5;
    long long nr=0;
    while(x>=pt)
    {
     nr=nr+x/pt;
     pt=pt*5;
    }
    return nr;
}
int main()
{
    ///nr de 0-uri este egal cu puterea la care apare 5 in n!
    cin>>p;
    if(p==0)
        cout<<1;
    else
    {
        st=0;gasit=-1;
        dr=50000000000;
        while(st<=dr)
        {
            mid=(st+dr)/2;
            if(nr_zerouri(mid)==p)
            {
              if(mid%10<5)
              n=mid/10*10;
              else
                n=mid/10*10+5;
                gasit=1;
              break;
            }
            else
                if(nr_zerouri(mid)<p)
                st=mid+1;
            else
                dr=mid-1;
        }
        if(gasit==-1)
            cout<<-1;
        else
            cout<<n;
    }
    return 0;
}