Cod sursa(job #1953643)

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

//returneaza numarul de zerouri pana la n!
int numar_zerouri(int n)
{
    int cnt=0;
    for(int 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
int cautbin(int p)
{
    int l=1,r=100000001,sol,mid;
    while(l<=r)
    {
        mid=(l+r)/2;
        if(numar_zerouri(mid)==p)
        {
            sol=mid;
            return sol;
        }
        else if(numar_zerouri(mid)<p)
            l=mid+1;
        else
            r=mid-1;
    }
    return 0;
}
int main()
{
    int p;
    f>>p;
    if(p==0)
        g<<1;
    else if(cautbin(p)==0)
        g<<"-1";
    else if(cautbin(p)>0)
        g<<cautbin(p)-cautbin(p)%5;
    f.close();
    g.close();
    return 0;
}