Cod sursa(job #549168)

Utilizator ukkoRadu Adrian-Leonard ukko Data 8 martie 2011 10:46:24
Problema Factorial Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int func(int n)
{
	int k = (int)(log(n) / log(5));
	int i = 1, q = 0, j = 1;	
	for(i = 1; i <= k; i++){
		j *= 5;	
		q += n/j;
	}
	return q;
}

int calc(int P)
{
	int k = P * 5, aux;			
	int q = func(k);
	if(P == 0)
		return 1;
	if(q == P)
		return k;
	while(q != P) {
		aux = k;			
		while(aux % 5 == 0) {
			q--;
			aux /= 5;
		}
		k = k - 5;
		if(q == P)
			return k;
		if(q < P)
			return -1;
	}	
	return k;
}

int main()
{
	FILE *f = fopen("fact.in", "r");
	FILE *g = fopen("fact.out", "w");			
	int P, i;
	fscanf(f, "%d", &P);	
//	for(i = 0; i <= P; i++ )
		fprintf(g, "%d", calc(P));
	fclose(f);
	fclose(g);
	return 0;
}