Cod sursa(job #629104)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 2 noiembrie 2011 17:23:36
Problema Factorial Scor 45
Compilator cpp Status done
Runda gc_practice Marime 1.02 kb
#include <stdio.h>
long v[]={5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125};

int cate_zerouri(long n){
   //cate zerouri are n!
   int k=0,suma=0,sp;
   int x=n;
   while(x!=0){
      x=n/v[k];
      suma+=x;  
      k++;
   }
   return suma;
}
/*
long cauta_n(int li, int ls){
    //if(li==ls)return 5*li;
    k=li+(ls-li)/2;
    if(cate_zerouri(5*k)==p)
}*/

int main(){
  FILE *fin=fopen("fact.in","r");
  FILE *fout=fopen("fact.out","w");
  int n,p;
  fscanf(fin,"%d",&p);
  int k;
  long x;
  int i;
  int li;int ls=5*p;
  if(p==0)printf("%d\n",1);
    else{
        li=1;
       while(li<=ls){
           //printf("caut intre %d %d\n",li,ls);
           k=li+(ls-li)/2;
           x=cate_zerouri(k);
           //printf("%d! are %d zerouri\n",k,x);
           if(x==p){
               fprintf(fout,"%d\n",k-k%5);
               return 0;
           }
           if(x<p){
              li=k+1; 
           }else{
              ls=k-1;
           }
       }
    }
   //printf("%d",cate_zerouri(6));
return 0;
}