Cod sursa(job #2375740)
| Utilizator | Data | 8 martie 2019 11:53:24 | |
|---|---|---|---|
| Problema | Factorial | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.99 kb |
#include <stdio.h>
int main()
{
FILE *fin,*fout;
fin=fopen("factorial.in","r");
fout=fopen("factorial.out","w");
long long p,st,dr,mij,poz,k,cp,l5,l2;
fscanf(fin,"%lld",&p);
if(p==0){
fprintf(fout,"1");
}
else{
st=1;
dr=p*20;
while(st<=dr){
mij=(dr+st)/2;
l5=0;
cp=1;
while(cp*5<=mij){
cp=cp*5;
l5=l5+mij/cp;
}
l2=0;
cp=1;
while(cp*2<=mij){
cp=cp*2;
l2=l2+mij/cp;
}
if(l2<l5)
k=l2;
else
k=l5;
if(k<p)
st=mij+1;
else
if(k>p)
dr=mij-1;
else{
poz=mij;
dr=mij-1;
}
}
fprintf(fout,"%lld",poz);
}
return 0;
}
