Pagini recente » Cod sursa (job #2625730) | Cod sursa (job #1910919) | Cod sursa (job #794937) | Cod sursa (job #1101093) | Cod sursa (job #408761)
Cod sursa(job #408761)
#include<stdio.h>
#define nmax 2000000000
FILE *f=fopen("factorial.in","r"), *g=fopen("factorial.out","w");
unsigned long long ls,ld,mij,i,t,p,zr;
struct nod
{
long long pt, zer;
} v[15];
int z(long long n)
{
int t=0;
while(n)
{
t+=n/5;
n/=5;
}
return t;
}
int main()
{
fscanf(f, "%d", &p);
v[0].pt=1;
for(i=1;v[i-1].pt*5<=nmax;i++)
{
v[i].pt=v[i-1].pt*5;
v[i].zer=i;
}
ls=0, ld=nmax*100;
if(p==0)
{
fprintf(g,"1");
return 0;
}
while(ls<ld)
{
mij=(ls+ld)/2;
zr=z(mij-(mij%5));
if(zr==p)
{
fprintf(g, "%ld", mij-mij%5);
return 0;
}
else if(zr<p)
ls=mij;
else if(zr>p)
ld=mij;
}
fprintf(g, "-1");
return 0;
}