Cod sursa(job #381623)

Utilizator shnakoVlad Schnakovszki shnako Data 11 ianuarie 2010 10:26:27
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
#define MARE 500000000
long long cinci[15], mij, ls, ld, p, i, x;
FILE *f=fopen("factorial.in", "r"), *g=fopen("factorial.out", "w");


void citeste(void)
{
	fscanf(f, "%lld", &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=MARE;
	mij=(ls+ld)/2;
	while (ls<ld)
	{
		x=mijloc();
		if (x==p)
			break;
		else
			if (x<p)
				ls=mij+1;
			else
				ld=mij-1;
		mij=(ls+ld)/2;
	}
	mij-=mij%5;
}

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;
}