Cod sursa(job #2074387)

Utilizator novistaAlex Staicu novista Data 24 noiembrie 2017 15:50:49
Problema Factorial Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("fact.in");
ofstream fout ("fact.out");
int n;
unsigned long long P;
unsigned long long p5(unsigned long long x)
{
    int nr=0,p=5;
    if (x==0) return -5;
    while (p<=x)
    {
        nr=nr+x/p;
        p=p*5;
    }
    return nr;
}
unsigned long long bin_search(unsigned long long p,unsigned long long u)
{
    unsigned long long m,fct;
    if (p>u)
        return 0;
    else
    {
        m=(p+u)/2;
        fct=p5(m);
        if (fct==P&&p5(m-1)<P)
            return m;
        else if (fct>=P)
                return bin_search(p,m-1);
             else return bin_search(m+1,u);
    }
}
int main()
{
    fin>>P;
    if (P==0) fout<<"0";
    else fout<<bin_search(1,1000000000);
    fin.close();
    fout.close();
    return 0;
}