Cod sursa(job #756063)

Utilizator vld7Campeanu Vlad vld7 Data 8 iunie 2012 21:44:05
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>

using namespace std;

FILE *f = fopen ("fact.in","r");
FILE *g = fopen ("fact.out","w");

int main()
{
	int P, cnt = 0, sol, i, ok = 1;
	
	fscanf (f, "%d", &P);
	
	if (P == 0)
		sol = 1;
	else if (P < 5 && P != 0)
		sol = 5 * P;
	else
	{
		for (i = 5; cnt < P; i += 5)
		{
			cnt += 4;
			int j = i;
			while (j % 5 == 0)
			{
				cnt++;
				j /= 5;
			}
			cnt++;
		}
		i -= 5;
		
		if (cnt > P)
		{
			while (cnt != P && ok)
			{
				int j = i;
				while (j % 5 == 0)
				{
					cnt--;
					j /= 5;
				}
				i--; cnt--;
				
				if (cnt < P)
					ok = 0;
			}
		}
		else
		{
			while (cnt != P && ok)
			{
				int j = i;
				while (j % 5 ==0)
				{
					cnt--;
					j /= 5;
				}
				i++; cnt--;
				
				if (cnt > P)
					ok =0;
			}
		}
		
		if (ok)
			sol = 5 * i;
		else
			sol = -1;
	}
	
	fprintf (g, "%d\n", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}