Cod sursa(job #311761)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 4 mai 2009 08:07:47
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
long long b[15],i,p,q,nr,ok,mij,k,x;
long long z(long long a)
{ long long k=0;
  while(a) k+=a/5,a/=5;
  return k;
 }
int main()
{ freopen("fact.in","r",stdin);
  freopen("fact.out","w",stdout);
  scanf("%lld",&nr);
  if(nr==0) { printf("1\n");
              fclose(stdin);
              fclose(stdout);
              return 0;
            }    
  b[1]=5;
  for(i=2;i<=14;i++) b[i]=5*b[i-1];
  p=1;
  q=40*nr;
  while(!ok&&p<=q) { mij=(p+q)/2;
                    k=z(mij);
                    if(nr==k) ok=1;
                    else if(nr<k)q=mij-1;
                    else if(nr>k)p=mij+1;
                 }
  while(mij%5!=0) --mij;
  if(z(mij)==nr) printf("%lld\n",mij);
  else printf("-1\n");
  printf("\n");
  fclose(stdin);
  fclose(stdout);
  return 0;
}