Cod sursa(job #247982)
Utilizator | Data | 24 ianuarie 2009 17:10:13 | |
---|---|---|---|
Problema | Factorial | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
//#include<algorithm>
//using namespace std;
#include<stdio.h>
int p;
void solve(){
int st,dr,x,y,m,k,ok;
scanf("%d",&p);
if(!p)
printf("1");
else{
for(st=1,dr=30000,ok=0; st<dr; ){
m=(st+dr)/2;
for(x=m,k=0; x; k+=x/=5);
if(k>p)
dr=m-1;
else if(k<p)
st=m+1;
else{
y=m;
ok=1;
break;}}
if(ok){
do{
for(x=y,k=0; x; k+=x/=5);
--y;}
while(k==p);
printf("%d",y+2);}
else
printf("-1");}}
int main(){
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
solve();
return 0;}