Cod sursa(job #329396)

Utilizator points_hunterAdrian Dobrescu points_hunter Data 6 iulie 2009 08:45:49
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>

int zeros_fact(int x){
    int nr=0,p=5;
    while(p<=x){
        nr+=x/p;
        p*=5;
        }
    return nr;
}

int bsearch(int li, int ls, int p){
    int m=(li+ls)/2;
    if(li>ls)
      return -1;
    int x=zeros_fact(m);
    if(x==p)
      return m;
    if(x>p)
      return bsearch(li,m-1,p);
    return bsearch(m+1,ls,p);
}

int main(){
    int n;
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%d",&n);
    if(n==0)
      printf("1");
    else{
        int x=bsearch(1,1000000000,n);
        while(x%5 && x!=-1)
           x--;
        printf("%d",x);
        }
    return 0;
}