Cod sursa(job #382798)

Utilizator SpiderManSimoiu Robert SpiderMan Data 14 ianuarie 2010 19:10:37
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;

long long cinci[13], mij, ls, ld, p, i, x;
short sw;
FILE *f=fopen("factorial.in", "r"), *g=fopen("factorial.out", "w");


void citeste(void)
{
	fscanf(f, "%d", &p);
	fclose(f);
}

void valori(void)
{
	cinci[1]=5;
	cinci[2]=25;
	cinci[3]=125;
	cinci[4]=625;
	cinci[5]=3125;
	cinci[6]=15625;
	cinci[7]=78125;
	cinci[8]=390625;
	cinci[9]=1953125;
	cinci[10]=9765625;
	cinci[11]=48828125;
	cinci[12]=244140625;
}

long long mijloc(void)
{
	long long s=0;
	for (i=1;i<=12;i++)
		s+=mij/cinci[i];
	return s;
}

void binary(void)
{
	ls=1;
	ld=10000000000LL;
	while (ls<=ld)
	{
	    mij=(ls+ld)/2;
		x=mijloc();
		if (x==p)
		{
			sw=1;
			break;
		}
		else
			if (x<p)
				ls=mij+1;
			else
				ld=mij-1;
	}
	if (sw)
		mij-=mij%5;
	else

		fprintf(g, "-1");


}

void tipareste(void)
{
	fprintf(g, "%lld", mij);
	fclose(g);
}

int main(void)
{
	citeste();
	if (p==0)
		fprintf(g, "1");
	else
	{
		valori();
		binary();
		tipareste();
	}
	return 0;
}