Cod sursa(job #830691)

Utilizator mvcl3Marian Iacob mvcl3 Data 7 decembrie 2012 13:49:59
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
#define LL long long
using namespace std;
LL Nmax;
ifstream f("fact.in"); ofstream g("fact.out");
int p,q;
LL p5[50];
inline LL ff(LL n)
{	LL nr = 0;
	int i = 1;
	while(p5[i] <= n)
	{	nr = nr + n / p5[i];
		++i;
	}
	return nr;
}
int cauta()
{	LL s = 1, d = p5[q], m,v;
	while(s <= d)
	{	m= (s + d)>>1;
		v = ff(m);
		if(p == v) { m = m - (m % 5); return m;}
		else
		{	if(p < v) d = m - 1;
			else
				s = m + 1;
		}
	}
	return -1;
}
int main()
{	Nmax = (1<<31);
	Nmax *= Nmax;
	f>>p;
	p5[0] = 1;
	for(q = 1; p5[q - 1] < Nmax; ++q) 
		p5[q] = p5[q -1] * 5;
	q--;
	if(!p) g<<1<<'\n';
	else
	{
		int val = cauta();
		g<<val<<'\n';
	}
	return 0;
}