Cod sursa(job #2336418)

Utilizator traiandobrinDobrin Traian traiandobrin Data 5 februarie 2019 09:18:51
Problema Factorial Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <cmath>
using namespace std;
unsigned long long log5(unsigned long long n)
{
    int l=0;
    while(n%5==0)
    {
        n/=5;
        l++;
    }
    return l;
}
long long powe(int x,int y)
{
    int i=0,p=1;
    for(i=1;i<=y;++i)
    {
        p*=x;
    }
    return p;
}
int cat5(int n)
{
    int c=0;
    while(n%5==0 && n>=5)
    {
        c++;
        n/=5;
    }
    return c;
}
int cat0(int n)
{   int c=0;
    for(int i=5;i<=n;i+=5)
    {
        c+=cat5(i);
    }
    return c;
}
int cbin(int 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()
{
    unsigned long long sg,c5,p,i,c=0;
    cin>>p;
    if(p==0){
    cout<<1;
    return 0;}
    else
    cout<<cbin(p);

    return 0;
}