Cod sursa(job #1697526)

Utilizator andrew_assassin789Andrei Manea andrew_assassin789 Data 2 mai 2016 12:56:15
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <algorithm>
using namespace std;
long long cate0(long long n)
{
    if (n<5) return 0;
    long long p5=25,n0=0;
    while (4*n>=p5-1)
    {
        p5*=5;
    }
    for (p5/=5;p5!=1;p5/=5)
    {
        n0+=(n/p5);
    }
    return n0;
}
int main()
{
    ifstream f("fact.in");
    ofstream g("fact.out");
    long long i,step=5,p;
    f>>p;
    if (!p) g<<"1\n";
    else
    {
        for (;cate0(step)<=p;step<<=1);
        step>>=1;
        for (i=0;step!=2;step>>=1)
        {
            if (cate0(i+step)<p)
                i+=step;
        }
        if (cate0(i+5)==p) g<<i+5<<'\n';
        else
        {
            if (cate0(i)==p) g<<i<<'\n';
            else g<<"-1\n";
        }
    }
    f.close();
    g.close();
    return 0;
}