Cod sursa(job #1953674)

Utilizator BeatriceBBeatrice Roxana BeatriceB Data 4 aprilie 2017 22:37:32
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");

//returneaza numarul de zerouri pana la n!
long long numar_zerouri(long n)
{
    long long cnt=0;
    for(long i=5; n/i>=1; i*=5)
        cnt+=n/i;
    return cnt;
}

//returneaza un numar cu p zerouri la sfarsit sau 0 daca nu gaseste
long cautbin(long p)
{
    long l=1, r=100000001, mid;
    while(l<r)
    {
        mid=(l+r)/2;
        if(numar_zerouri(mid)>=p)
            r=mid;
        else
            l=mid+1;
    }
    if(numar_zerouri(l)==p)
        return l;
    return 0;
}
int main()
{
    long  p;
    f>>p;
    if(p==0)
        g<<1;
    else if(cautbin(p)==0)
        g<<"-1";
    else if(cautbin(p)>0)
        g<<cautbin(p);
    f.close();
    g.close();
    return 0;
}