Cod sursa(job #89913)
Utilizator | Data | 7 octombrie 2007 20:17:49 | |
---|---|---|---|
Problema | Factorial | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<stdio.h>
int count_zero(int n)
{
int div=1, count, sol=0,pas=0;
do
{
div*=5;
count=n/div;
++pas;
sol+=count;
}
while (count);
return sol;
}
int main()
{
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
int n, st, dr, mij;
scanf("%d", &n);
st=1;
dr=2000000000;
mij=(st+dr)/2;
while (st!=dr)
{
if (count_zero(mij)>n)
dr=(st+dr)/2;
else
st=(st+dr)/2+1;
mij=(st+dr)/2;
}
if (count_zero(mij-5)==n)
printf("%d", mij-5);
else
printf("-1");
return 0;
}