Cod sursa(job #296725)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 5 aprilie 2009 02:24:57
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <stdio.h>
int main()
{long long int  x,st,dr,k,i,s,v[100000],nr;
 freopen("fact.in","r",stdin);
 freopen("fact.out","w",stdout);
 scanf("%lld",&k);
 if (k=0) x=1; else
 if (k<=4) x=k*5; else
 {
 st=0;dr=k*5;nr=1;v[nr]=5;
  for( ; ;)
  {
   if (st>dr) {x=-1; break;}
    s=0;x=(st+dr)/2; for (;v[nr]*5<=x;) {nr+=1; v[nr]=v[nr-1]*5;}
    for (i=1;i<=nr;i++)
       s+=x/v[i];
    if (s==k) { break;} else
    if (k<s) dr=x-1; else
    if (k>s) st=x+1;

   }
  }
 if (x==-1) printf("-1"); else
 printf("%lld",(x/5)*5);
 return 0;}