Cod sursa(job #1800347)

Utilizator medicinedoctoralexandru medicinedoctor Data 7 noiembrie 2016 18:18:20
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream cin("fact.in");
ofstream cout("fact.out");

int d,p,a=1,b=400000015,c;

int nzfx(int x) // Numarul de Zerouri al lui Factorial de X
{
    int c=x/5;
    c+=x/25;
    c+=x/125;
    c+=x/625;
    c+=x/3125;
    c+=x/15625;
    c+=x/78125;
    c+=x/390625;
    c+=x/1953125;
    c+=x/9765625;
    c+=x/48828125;
    c+=x/244140625;
    return c;
}

int f(int x)
{
    return nzfx(x)-p;
}

main()
{
    cin >> p;
    if (f(a)==0) cout << a; else
    if (f(b)==0) cout << b; else
    for ( ; ; )
    {
        c=(a+b)/2;
        d=f(c);
        if (d==0)
        {
            while (f(c)==f(c-1))
            {
                c--;
            }
            cout << c;
            break;
        }
        if (d<0 && f(c+1)>0)
        {
            cout << -1;
            break;
        }
        if (d<0) a=c; else b=c;
    }
}