Pagini recente » Cod sursa (job #1235927) | Cod sursa (job #511618) | Cod sursa (job #1813542) | Cod sursa (job #2147498) | Cod sursa (job #212699)
Cod sursa(job #212699)
#include <stdio.h>
const long long puteri[12]={5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625};
int p;
int pt(long long x)
{
int nr=0,i;
i=0;
while (x/puteri[i])
{
nr+=x/puteri[i];
i++;
}
return nr;
}
long long cauta(long long x)
{
int a=0,b=400000015,m;
while(a<b){
m=(a+b)/2;
if(pt(m)>=p)
b=m;
else
a=m+1;
}
if(pt(a)==x)
return a;
return -1;
}
int main()
{
FILE *in,*out;
in=fopen("fact.in","r");
out=fopen("fact.out","w");
fscanf(in,"%d",&p);
if (p==0)
{
fprintf(out,"1\n");
fclose(in);
fclose(out);
return 0;
}
fprintf(out,"%lld\n",cauta(p));
fclose(in);
fclose(out);
return 0;
}
/*#include<stdio.h>
long long search(long long);
int main ()
{
int p;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d",&p);
printf("%lld\n",search(p));
return 0;
}
bool ver(long long x,long long p)
{
long long i,nr=0;
for (i=5;i<=x;i*=5)
{
nr+=x/i;
}
return nr>=p?1:0;
}
long long search(long long p)
{
long long rez=0,i;
for (i=((long long)1)<<60;i;i>>=1)
{
rez+=i;
if (ver(rez,p))
rez-=i;
}
return rez+1;
}*/