Pagini recente » Cod sursa (job #617350) | Cod sursa (job #552404) | Cod sursa (job #2416455) | Cod sursa (job #1789600) | Cod sursa (job #315494)
Cod sursa(job #315494)
#include<stdio.h>
long long p;
unsigned long long fact(unsigned long long k)
{unsigned long long rez=0,cat;
cat=k/5;
while(cat)
{rez+=cat;
cat/=5;
}
return rez;
}
int main()
{FILE *f=fopen("fact.in","r");
FILE *g=fopen("fact.out","w");
unsigned long long st,dr,c,aux;
fscanf(f,"%lld",&p);
fclose(f);
if(p==0)
{fprintf(g,"1");
fclose(g);
return 0;
}
dr=1<<31;
dr/=5;
dr-=dr%5;
st=0;
while(st<dr)
{
if(st==dr)
if(fact(st)!=p)
{fprintf(g,"-1");
fclose(g);
return 0;
}
else
{fprintf(g,"%lld",st*5);
fclose(g);
return 0;
}
else
{c=st+dr; c>>=1;
aux=fact(c*5);
if(aux<p) st=c+1;
else if(aux>p) dr=c-1;
else
{fprintf(g,"%lld",c*5);
fclose(g);
return 0;
}
}
}
fprintf(g,"-1");
fclose(g);
return 0;
}