Cod sursa(job #1877044)

Utilizator EduardTudosaEduard Bogdan EduardTudosa Data 12 februarie 2017 21:11:12
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long long maxi=100000000,st,dr,rez,P;
int nrzero(unsigned long long a)
{
    int nr=0,p=5;
    while(a>=p)
    {
        nr=nr+a/p;
        p=p*5;
    }
    return nr;
}
unsigned long long cauta(unsigned long long st,unsigned long long dr,unsigned long long P)
{
    unsigned long long x,mij;
    if(st<=dr)
    {
        mij=(st+dr)/2;
        x=nrzero(mij);
        if(x==P)
            return mij;
        else if(x<P)
            cauta(mij+1,dr,P);
        else
            cauta(st,mij-1,P);
    }
    else
        return -1;
}
int main()
{
    fin>>P;
    st=1;
    dr=maxi;
    if(P==0)
        fout<<1;
    else
    {
        rez=cauta(st,dr,P);
        if(rez!=-1)
        {
            while(rez%5!=0)
                rez--;
            fout<<rez;
        }
        else
            fout<<-1;
    }
    return 0;
}