Pagini recente » Cod sursa (job #1219433) | Cod sursa (job #1145013) | Borderou de evaluare (job #1921036) | Cod sursa (job #2894573) | Cod sursa (job #408692)
Cod sursa(job #408692)
#include<stdio.h>
#define nmax 1000000000
FILE *f=fopen("factorial.in","r"), *g=fopen("factorial.out","w");
int i,t,p,zr;
long long ls,ld,mij;
struct nod
{
long long pt, zer;
} v[15];
int z(long long n)
{
for(i=1;i<=12;i++)
if(v[i].pt<=n && v[i+1].pt>=n)
{
t=v[i].zer-1;
break;
}
n=n/5;
t+=n;
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=100;
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;
}