Cod sursa(job #1536413)

Utilizator enedumitruene dumitru enedumitru Data 26 noiembrie 2015 08:49:13
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
#define LL long long
using namespace std;
ifstream f("fact.in"); ofstream g("fact.out");
int p,q;
LL Nmax,p5[30];
inline LL ff(LL n)
{   LL nr=0; int i=1;
    while(p5[i]<=n) nr=nr+n/p5[i++];
    return nr;
}
inline int cauta()
{   LL m,v,s=1,d=p5[q];
    while(s<=d)
    {   m=(s+d)>>1; v=ff(m);
        if(p==v) return m-m%5;
        if(p<v) d=m-1; else s=m+1;
    }
    return -1;
}
int main()
{   Nmax=(1LL<<62);
    f>>p; p5[0]=1;
    for(q=1; p5[q-1]<Nmax; ++q) p5[q]=5*p5[q-1];
    q--;
    if(p) g<<cauta()<<'\n'; else g<<"1\n";
    return 0;
}