Pagini recente » Cod sursa (job #3277988) | Cod sursa (job #899582) | Cod sursa (job #1525778) | Cod sursa (job #3266261) | Cod sursa (job #1460264)
#include <stdio.h>
#include <math.h>
int p;
int nrcinci(long long n)
{
int rez=0,i;
for (i=14;i>=1;i--)
rez+=n/(long long)pow(5,i);
return rez;
}
int cauta(long long n1,long long n2)
{
if (n2 - n1 <= 5 && (nrcinci(n1) < p) && (nrcinci(n2) > p))
return -1;
if (n1 == n2)
{
if (nrcinci(n1)==p)
return n1;
else
return -1;
}
long long aux=(n1+n2)/2;
if (nrcinci(aux)==p)
return aux;
else if (nrcinci(aux)<p)
return cauta(aux+1,n2);
else return cauta(n1,aux);
}
int main()
{
FILE *in,*out;
in=fopen("fact.in","r");
out=fopen("fact.out","w");
fscanf(in,"%d",&p);
int n=floor(log(4*p+1)/log(5));
long long N1=pow(5,n);
long long N2=pow(5,n+1);
long long rez=cauta(0,N2);
int cc=0;
while (nrcinci(rez)==p)
{
rez--;
cc++;
}
if (cc>0)
rez++;
if (p==0)
rez=0;
if (p==1)
rez=5;
fprintf(out,"%lld",rez);
return 0;
}