Cod sursa(job #261655)

Utilizator ShootMeBistriceanu Andrei ShootMe Data 18 februarie 2009 17:08:54
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#include <iostream>
long P;

int main()
{
	freopen ("fact.in","r",stdin);  
	freopen ("fact.out","w",stdout);
	scanf("%ld",&P);  
	
	long left = 1;
	long right = 500000000;
	long middle, aux, sum;
	
	while (left < right - 1)
	{
		middle = (left + right) / 2;
		sum = 0;
		aux = middle;
		while (aux > 0)
		{
			sum += aux / 5;
			aux = aux / 5;
		}
		
		if (sum < P)
			left = middle;
		else
			if (sum > P)
				right = middle;
			else
			{
				while (middle % 5 != 0)
					middle --;

				printf("%ld\n",middle);
				return 0;
			}
	}
	printf("%ld\n",-1);
	return 0;
}