Cod sursa(job #726552)

Utilizator titeltitel popescu titel Data 27 martie 2012 12:25:41
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<fstream>
#define i64 long long 
using namespace std;
ifstream f("fact.in"); ofstream g("fact.out");
i64 d61, c[30];
int i, p, nr, w, m, st, dr;
inline int fct(int n)
{int s=0, i=1;
 while(c[i]<=n) s+=n/c[i++];
 return s;
}
int main()
{	f>>p; 
	if(p==0) {g<<"1\n"; w=0;} 
		else {	d61=1LL<<61; c[0]=1;  
				while(4*c[i]<d61-c[i]){i++; c[i]=c[i-1]*5;}
				st=1; dr=p*5; w=1;
			 }
	while((st<=dr) && w)
	   {m=(st+dr)/2;
	    nr=fct(m);
		if(nr==p) {g<<m-m%5<<"\n"; w=0;}
			else if(nr<p) st=m+1; else dr=m-1;
	   }
	if(w) g<<"-1\n";
	return 0;
}