Cod sursa(job #1800161)

Utilizator 1000Sabin Ilegitim 1000 Data 7 noiembrie 2016 14:48:07
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;
ifstream cin("fact.in");
ofstream cout("fact.out");
const long long infinit=1000000000;
long long p, n;
long long cauta(long long st, long long dr);
long long nrzero(long long q);
int main()
{
    cin>>p;
    if(p==0)
        cout<<1;
    else
    {
        n=cauta(1, infinit);
        cout<<n;
    }
    return 0;
}

long long cauta(long long st, long long dr)
{
    long long mij=(dr+st)/2;
    while(st<=dr)
    {
        long long r=nrzero(mij);
        if(r<p)
            return cauta(mij+1, dr);
        else if(r>p)
            return cauta(st, mij-1);
        else
            return (mij-(mij%5));
    }
    return -1;
}

long long nrzero(long long q)
{
    int p1=5;
    int nr=0;
    while(q>=p1)
    {
        nr+=q/p1;
        p1*=5;
    }
    return nr;
}