Mai intai trebuie sa te autentifici.
Cod sursa(job #582356)
Utilizator | Data | 15 aprilie 2011 11:36:03 | |
---|---|---|---|
Problema | Factorial | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<stdio.h>
#include<math.h>
long long ok(long long med)
{
long long pt=5,z=0;
while(med/pt!=0)
{
z=z+med/pt;
pt=pt*5;
}
return z;
}
long long bs(long long st,long long dr,long long p)
{
long long med,last=-1;
while(st<=dr)
{
med=st+(dr-st)/2;
if(ok(med)<p)
st=med+1;
else
{
last=med;
dr=med-1;
}
}
return last;
}
int main()
{
freopen("factorial.in","r",stdin);
freopen("factorial.out","w",stdout);
long long p,sol,st=1,dr=1<<60;
scanf("%lld",&p);
sol=bs(st,dr,p);
printf("%lld",sol);
return 0;
}