Pagini recente » Cod sursa (job #2989040) | Cod sursa (job #1792425) | Cod sursa (job #2107584) | Cod sursa (job #209544) | Cod sursa (job #446540)
Cod sursa(job #446540)
#include <stdio.h>
#include <math.h>
int p;
int nrcinci(long long n)
{
int rez=0,i;
for (i=1;i<=14;i++)
rez+=n/pow(5,i);
return rez;
}
int cauta(long long n1,long long n2)
{
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); // <5^13
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;
fprintf(out,"%lld",rez);
return 0;
}