Cod sursa(job #482318)
| Utilizator | Data | 3 septembrie 2010 00:59:51 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <stdio.h>
int p;
int nr(int k){
int temp=0,i=5;
while(i<=k){temp+=k/i;i*=5;}
return temp;
}
int bs(int lo,int hi){
int mid;
while(lo<hi){
mid=lo+(hi-lo)/2;
if(nr(mid)>=p){hi=mid;}else{lo=mid+1;}
}
if(nr(lo)==p){return lo;}else{return -1;}
}
int main(){
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d",&p);
int i=1;
if(p==0){printf("1");}else{
printf("%d",bs(0,5*p));
}
return 0;}