Cod sursa(job #93640)

Utilizator igorPirnau Igor igor Data 19 octombrie 2007 18:41:45
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream.h>

ifstream f("fact.in");
ofstream g("fact.out");

int main()
{ long long n,p,st,i,dr,sum,ok,k;
  f>>p;
  f.close();
  if(p==0){ g<<"1"; g.close(); return 0; }
  if(p==1){ g<<"5"; g.close(); return 0; }
  int x=p; int nr=0;
  while(x!=1&&x%5==0){ x=x/5; nr++; }
  if(x==1) if(nr%2==0) { g<<"-1"; g.close(); return 0; }  
  ok=1;
  st=0;
  dr=(long long)1<<30;
  while(ok){ n=(st+dr)>>1;
             sum=0;
             for(k=5;n>=k;k=k*5) sum=sum+n/k;
             if(sum>p) dr=n;
               else if(sum<p) st=n;
                      else ok=0;
                }
  n=n-n%5;
  g<<n;                 
  g.close();
  return 0;
}