Cod sursa(job #1557360)

Utilizator OlivianOlivian Dan Cretu Olivian Data 27 decembrie 2015 13:06:51
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
using namespace std;
unsigned long long n,p;
unsigned long long zerouri(unsigned long long x)
{
    unsigned long long s=0;
    unsigned long long k=5;
    while(k<=x)
    {
        unsigned long long a=x/k;
        s+=a;
        k*=5;
    }
    return s;
}
unsigned long long cautbin(unsigned long long val)
{
    unsigned long long start=1;unsigned long long step=(1<<30);
    for(;step;step>>=1)
    {
        unsigned long long index=start+step;
        if(zerouri(index)<=val) start=index;
    }return start;
}
int main()
{
        freopen("fact.in","r",stdin);
        freopen("fact.out","w",stdout);
    scanf("%lld",&p);
    unsigned long long val=cautbin(p-1)+5;
    if(p==0) printf("1");
    else if(val==0) printf("-1"); else printf("%lld",val-val%5);
}