Cod sursa(job #39628)

Utilizator za_wolfpalianos cristian za_wolf Data 26 martie 2007 21:19:36
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<math.h>
long s,a,i,j,k,l,n,m,x[20];
int kkt(long x)
{
long s,i,k;
i=5;
k=x;
s=0;
while (k/i>=1)
{
s+=k/i;
i=i*5;
}
if (s==n) return 1;
return 0;
}
int main()
{
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);
	scanf("%ld",&n);
	x[0]=0;
	x[1]=25;
	x[2]=125;
	x[3]=625;
	for (i=4;i<=13;i++)
	{
		x[i]=pow(5,i+1)-pow(5,i)+5;
	}
	m=5;
	if (n>pow(5,m))
	{
		s=1;
		while(n>pow(5,m))
		m++;
	}
	else
	{
		s=0;
		while(n<pow(5,m))
		m--;
	}
	if (x[m]==n)
		printf("%ld\n",pow(5,i+1));
	else
	{
	if (s==1)
		{
		k=x[m-1];
		for (i=k;i<=x[m];i+=5)
		/*if (kkt(i))*/{a=i;s=0;j=5;while (a/j>=1){s+=a/j;j=j*5;} if (a==n) {printf("%ld\n",i); return 0;}}
		}
	else
		{
		k=x[m];
		for (i=k;i<=x[m+1];i+=5)
		/*if (kkt(i))*/{a=i;s=0;j=5;while (a/j>=1){s+=a/j;j=j*5;} if (a==n) {printf("%ld\n",i); return 0;}}
		}

	}


return 0;
}