Cod sursa(job #1281275)
| Utilizator | Data | 2 decembrie 2014 23:18:37 | |
|---|---|---|---|
| Problema | Factorial | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <cstdio>
using namespace std;
int exp(int n)
{
int p = 5, rasp = 0;
while(p <= n)
{
rasp += n / p;
p *= 5;
}
return rasp;
}
int binar(int st, int dr, int val)
{
int med, last = -1;
while(st <= dr)
{
med = st + (dr - st) / 2;
if(exp(med) >= val)
{
last = med;
dr = med - 1;
}
else
st = med + 1;
}
return last;
}
int main()
{
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
int n;
scanf("%d", &n);
printf("%d\n", binar(1, 2000000000, n));
return 0;
}