Cod sursa(job #639450)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 23 noiembrie 2011 11:53:15
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb

#include <cstdio>
#include <fstream>

using namespace std;

typedef long long I64;
int P,lf,rt;

void read ()
{
	ifstream in ("fact.in");
	in>>P;
}

int ok (int n)
{
	I64 r=0;
	for(I64 p=5;p<=n;p*=5)
		r+=n/p;
	return r;
}

void solve ()
{
	for(lf=1,rt=P<<4;lf+1<rt;)
	{
		int mid = (lf+rt+1)>>1;
		if(ok(mid)>=P)
			rt=mid;
		else
			lf=mid;
	}
}

void out ()
{
	freopen ("fact.out","w",stdout);
	if(ok(lf)==P)
		printf("%d",lf);
	else
		if(ok(rt)==P)
			printf("%d",rt);
		else
			printf("-1");
}

int main ()
{
	read ();
	solve ();
	out ();
	return 0;
}