Cod sursa(job #377991)

Utilizator pufuPufu Cristian pufu Data 27 decembrie 2009 11:13:18
Problema Factorial Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int v[20];
int j;

int fact (int n)
{
	int k2 = 0, i, k;
	
	for (j = 0; j < 20; j++)
		if (v[j] > n)
		{
			k = j - 1;
			break;
		}
	
	for (i = 0; i <= k; i++)
		k2 = k2 + n / v[i];
	return k2;
}

int main()
{
	int N, P;
	FILE *f, *g;
	
	f = fopen ("fact.in", "r");
	g = fopen ("fact.out", "w");

	fscanf (f, "%d", &P);
	if (P == 0)
	{
		fprintf(g, "1");
		return 0;
	}

	for (j = 0; j < 20; j++)
		v[j] = pow (5, j + 1);

	N = P;

	while (1)
	{
		if (fact(N) == P)
		{
			fprintf(g, "%d", N);
			break;
		}
		if (fact(N) > P)
		{
			fprintf(g, "-1");
			break;
		}
			
		N++;
	}

	fclose(f);
	fclose(g);

	return 0;
}