Pagini recente » Cod sursa (job #2400338) | Cod sursa (job #3256553) | Cod sursa (job #2821203) | Cod sursa (job #3264201) | Cod sursa (job #211803)
Cod sursa(job #211803)
#include <stdio.h>
unsigned long long cauta(unsigned long long li, unsigned long long ls, unsigned long long x);
unsigned long long zero(unsigned long long x);
int main()
{
unsigned long long p, li=0, ls=1000000000000000000LL;
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
scanf("%lld", &p);
printf("%lld", cauta(li, ls, p));
return 0;
}//main
unsigned long long cauta(unsigned long long li, unsigned long long ls, unsigned long long x)
{
unsigned long long m;
while (li<ls)
{
m=(li+ls)/2;
if (x>zero(m))
li=m+1;
else
ls=m;
}//while
m=(li+ls)/2;
if (x>zero(m))
m++;
if (zero(m)==x)
return m;
else
return -1;
}//cauta
unsigned long long zero(unsigned long long x)
{
unsigned long long z=0, p=5;
while (p<=x)
{
z+=x/p;
p*=5;
}//while
return z;
}//zero