Cod sursa(job #1200029)

Utilizator alex_bucevschiBucevschi Alexandru alex_bucevschi Data 21 iunie 2014 17:27:25
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>

using namespace std;
typedef long long unsigned tip;
tip p,b=(1<<64)-1,nrz,SOL;
bool ok;
tip fact(tip x)
{
    tip sol=0;
    for(x/=5;x;x/=5)
        sol+=x;
    return sol;
}
void bs(tip st,tip dr)
{
    if(st+1==dr)return;
    tip mi=(st+dr)/2;
    nrz=fact(mi);
    if(nrz==p)
    {
        SOL=mi;
        bs(st,mi);
        return;
    }
    if(nrz<p)
        bs(mi,dr);
    else
        bs(st,mi);
}
int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%lld",&p);
    bs(0,b);
    if(SOL)
        printf("%lld\n",SOL);
    else
        printf("-1\n");
    return 0;
}