Cod sursa(job #311214)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 2 mai 2009 22:31:08
Problema Factorial Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
long long b[13],i,p,q,nr,ok,mij,k,x;
long long z(long long a,long long i1)
{ if(b[i1]<a) return  a/b[i1]+ z(a,i1+1);
              else return 0;
 }
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<=12;i++) b[i]=5*b[i-1];
  p=1;
  q=5*nr;
  while(!ok&&p<=q) { mij=(p+q)/2;
                    k=z(mij,1);
                    if(nr==k) ok=1;
                    else if(nr<k)q=mij-1;
                    else if(nr>k)p=mij+1;
                 }
  while(mij%5!=0) --mij;
  k=z(mij,1);
  if(k==nr) printf("%lld\n",mij);
  else printf("-1\n");
  printf("\n");
  fclose(stdin);
  fclose(stdout);
  return 0;
}