Cod sursa(job #353741)

Utilizator andrei.sfrentSfrent Andrei andrei.sfrent Data 5 octombrie 2009 22:46:42
Problema Factorial Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<cstdio>

#define maxim(a, b) (a>b?a:b)

long long p, x;

long long zero(long long n)
{
	long long p5 = 5, r, suma = 0;
	while(1)
	{
		r = n / p5;
		if(r == 0) return suma;
		suma += r;
		p5 *= 5;
	}
}

int qzero(int n)
{
	return n / 5 +  n / 25 + n / 125 + n / 625 + n / 3125 + n / 15625 + n / 78125;
}

void citeste()
{
	FILE* fi = fopen("fact.in", "r");
	fscanf(fi, "%d", &p);
	fclose(fi);
}

void scrie()
{
	FILE* fo = fopen("fact.out", "w");
	fprintf(fo, "%d\n", x);
	fclose(fo);
}

void rezolva()
{
	long long li = 1; 
	long long ls = 100000000;
	ls = ls * ls;
	long long mij;
	while(li < ls)
	{
		mij = (li + ls) / 2;
		if(zero(mij) < p)
			li = mij + 1;
		else
			ls = mij;
	}
	long long ind = maxim(li, ls) + 1000;
	while(zero(ind) >= p)
	{
		x = ind;
		ind--;
	}
}

int main()
{
	citeste();
	rezolva();
	scrie();
	return 0;
}