Cod sursa(job #476225)

Utilizator a.stanciuStanciu Adrian a.stanciu Data 10 august 2010 12:19:10
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

int main()
{
	int p, pp, n = 0;
	FILE *f;

	f = fopen("fact.in", "r");
	fscanf(f, "%d", &p);
	fclose(f);

	pp = p;

	int fact[] = {5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125};
	int zero[] = {1, 6, 31, 156, 781, 3906, 19531, 97656, 488281, 2441406, 12207031, 61035156, 305175781};

	int i;
	for (i = 12; i >= 0; i--)
		if (p >= zero[i])
		{
			n += p / zero[i] * fact[i];
			if (p / zero[i] % 5 == 0)
			{
				n = -1;
				break;
			}
			p = p % zero[i];
		}

	if (n != -1)
		for (i = 0; i <= 12; i++)
			if (fact[i] == n && pp < zero[i])
			{
				n = -1;
				break;
			}

	if (pp == 0) n = 1;

	f = fopen("fact.out", "w");
	fprintf(f, "%d\n", n);
	fclose(f);
	
	return 0;
}