Cod sursa(job #1326957)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 26 ianuarie 2015 11:32:11
Problema Factorial Scor 0
Compilator cpp Status done
Runda procopiu_9_oji2015 Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;
ofstream g("factorial.out");
long long p,n,nmin,nmax,i,ii,c,s,iii;
int main()
{
    freopen("factorial.in","r",stdin);
    scanf("%lld",&p);
    if (p==0)
    {
        g<<1;
        return 0;
    }
    /*n1=(-1+sqrt(double(1+8*p)));
    if(p==n*(n+1)/2)
    {
        g<<-1;
        return 0;
    }*/
    n=5;
    c=1;
    while(c<p)
    {
        n=n*5;
        c=c*5+1;
    }
    nmax=n/5;
    nmin=n/5;
    c=(c-1)/5;
    while(c<p)
    {
        nmax*=2;
        c*=2;
    }
    nmin=nmax/2;
    c=0;
    while(nmin<=nmax)
    {
        c=0;
        i=ii=(nmin+nmax)/2;
        while(ii)
        {
            c+=ii/5;
            ii/=5;
        }
        if(c>p)
        {
            nmax=(nmin+nmax)/2-1;
        }
        if(c<p)
        {
            nmin=(nmin+nmax)/2+1;
        }
        if(c==p)
        {
            for(ii=i;c==p;ii--)
            {
                c=0;
                iii=ii;
                while(iii)
                {
                    c=c+iii/5;
                    iii/=5;
                }
            }
            g<<ii+2;
            return 0;
        }
    }
    g<<-1;
    return 0;
}