Nu aveti permisiuni pentru a descarca fisierul grader_test4.ok
Cod sursa(job #129568)
Utilizator | Data | 29 ianuarie 2008 18:45:12 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <stdio.h>
long p,low,mid,high,p5,nr0;
int main(){
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%ld",&p);
if (p==0){printf("1\n");return 0;}
low=1;
high=2000000000;
while (low<high){
mid = (low + high)/2;
p5=5;nr0=0;
while (p5<=mid){
nr0+=mid/p5;
p5*=5;
}
if (nr0 < p){
low = mid + 1;
}
else
high = mid;
}
p5=5;nr0=0;
while (p5<=low){
nr0+=low/p5;
p5*=5;
}
while (low%5)low--;
if (low <2000000000 && nr0==p)
printf("%ld\n",low);
else printf("-1\n");
return 0;
}