Cod sursa(job #684)

Utilizator pcalinPopa Calin pcalin Data 11 decembrie 2006 18:43:44
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#include <math.h>

long n,m;

int suma(int j,int k)
{
	long s=0;
	for (int i=1;i<=k;i++)
		s+=floor(j/pow(5,i));
	return s;
}
int fact(long p)
{int i;long a,b,j;
if (p==0) return 1;
	else
	{
		m=1;
		for(i=1;m<=p;i++)
			m+=pow(5,i);
		m-=pow(5,--i);
		a=ceil(p*pow(5,i)/m);
		b=floor((p+i)*pow(5,i)/m);
		for(j=a;j<b;j++)
			if (suma(j,i)==p) return j;
	return -1;
	}

}

int main(char *argv[],int argc)
{
	long p;
	int i;
	FILE *f;
	f=fopen("fact.in","rt");
	fscanf(f,"%d",&p);
	fclose(f);
	f=fopen("fact.out","wt");
	i=fact(p);
	fprintf(f,"%d",i);
	return 0;
}