Cod sursa(job #630721)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 6 noiembrie 2011 14:11:11
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
long cauta(long start, long stop);
long nrZero(long k);
long p, n;
int main()
{
	freopen("fact.in", "r", stdin);
	freopen("fact.out", "w", stdout);
	scanf("%ld",&p);
	n=cauta(0, p*5);
	if (n>0)
		n-=n%5;
	if (n==0)
		n++;
	printf("%ld",n);
	return 0;
}//main

long cauta(long start, long stop)
{
	long mid, z;
	while (start<=stop)
	{
		mid=start+((stop-start)/2);
		z=nrZero(mid);
		//printf("%ld %ld %ld %ld\n", start, mid, stop, z);
		if (z==p)
			return mid;
		if (p<z)
			stop=mid-1;
		else
			start=mid+1;
	}//while
	return -1;
}//cauta

long nrZero(long k)
{
	long rez=0;
	while ((k/5)>0)
	{
		rez+=k/5;
		k/=5;
	}//while
	return rez;
}//nrZero