Cod sursa(job #1200900)

Utilizator allexx2200Atanasiu Alexandru-Marian allexx2200 Data 23 iunie 2014 19:58:24
Problema Factorial Scor 25
Compilator c Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>

#define ERR 1
#define SUC 0

#define F_IN  "fact.in"
#define F_OUT "fact.out"

void funct(int *nr2, int *nr5, int p)
{
	while(p%2 == 0)
	{
		(*nr2)++;
		p /= 2; 
	}
	while(p%5 == 0)
	{
		(*nr5)++;
		p /= 5;
	}
}

int min(int a, int b)
{
	if(a<b)
		return a;
	return b;
}

int main()
{
	int nr2 = 0, nr5 = 0, p,i = 2;
	
	FILE *in  = fopen( F_IN, "rt");
	if(!in)
		return ERR;
	FILE *out = fopen(F_OUT, "wt");
	if(!out)
	{
		fclose(in);
		return ERR;
	}
	fscanf(in, "%d", &p);
	for(i = 2; min(nr2,nr5) < p; i++)
	{
		funct(&nr2,&nr5,i);
		if(min(nr2,nr5) > p)
		{
			fprintf(out, "-1");
			fclose(in);
			fclose(out);
			return SUC;
		}
	}
	--i;
	fprintf(out, "%d", i);
	
	fclose(in);
	fclose(out);
	return SUC;
}