Cod sursa(job #353745)

Utilizator andrei.sfrentSfrent Andrei andrei.sfrent Data 5 octombrie 2009 22:50:29
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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;
	}
}

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

void scrie()
{
	FILE* fo = fopen("fact.out", "w");
	fprintf(fo, "%lld\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 && ind >= 1)
	{
		x = ind;
		ind--;
	}
}

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