Cod sursa(job #244716)

Utilizator otilia_sOtilia Stretcu otilia_s Data 15 ianuarie 2009 20:57:55
Problema Factorial Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
using namespace std;
#define MAXN 25000000
long p;

void citire()
{
 FILE *fin=fopen("fact.in","r");
 fscanf(fin,"%ld",&p);
 fclose(fin);
}

long f(long x)
{
 long nr=0; long p5=5;
 while (p5<=x)
  {
   nr+=x/p5;
   p5*=5;
  }
 return nr;
}


void rezolvare()
{ long a,b,c;
 a=0; b=MAXN;
 c=(a+b)/2; int ok=0;
 while (a<b)
  {
   c=(a+b)/2;
   long F=f(c);
   if (F==p) {a=b+1; ok=1; }
      else
       if (F<p) {a=c+1;}
	  else b=c-1;
  }
 FILE *fout=fopen("fact.out","w");
 if (!ok) fprintf(fout,"-1\n");
    else {
	  c=c/5*5;
	  if (!c) c=1;
	  fprintf(fout,"%ld\n",c);
	 }
fclose(fout);
}

int main()
{
 citire();
 rezolvare();
 return 0;
}