Cod sursa(job #2336422)

Utilizator traiandobrinDobrin Traian traiandobrin Data 5 februarie 2019 09:22:21
Problema Factorial Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <cmath>
using namespace std;
int cat5(long long n)
{
    int c=0;
    while(n%5==0 && n>=5)
    {
        c++;
        n/=5;
    }
    return c;
}
int cat0(long long n)
{   int c=0;
    for(long long i=5;i<=n;i+=5)
    {
        c+=cat5(i);
    }
    return c;
}
long long cbin(long long p)
{
    int msk,pos=0;
    for(msk=1<<20;msk>0;msk/=2)
    {
        if(cat0(msk+pos)<=p)
        pos+=msk;
    }
    if(cat0(pos)==p)
    return pos-pos%5;
    else
    return -1;
}
ifstream cin("fact.in");
ofstream cout("fact.out");
int main()
{
    long long sg,c5,p,i,c=0;
    cin>>p;
    if(p==0){
    cout<<1;
    return 0;}
    else
    cout<<cbin(p);

    return 0;
}