Cod sursa(job #583574)

Utilizator rendorzegAndrei Pavel rendorzeg Data 20 aprilie 2011 23:29:08
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<stdio.h>
unsigned long z[16],p[16],i;
long fact(long a)
{
	unsigned long n,j;
	n=0;
	for (j=i;j>=1;j--)
		if (a>=z[j])
		{
			n+=(a/z[j])*p[j];
			a%=z[j];
		}
	return n;
}
int main()
{
	unsigned long a,j;
	long n,m;
	freopen ("fact.in","r",stdin);
	freopen ("fact.out","w",stdout);
	p[1]=5;
	z[1]=1;
	i=1;
	scanf("%i",&a);
	while (a>z[i])
	{
		i++;
		p[i]=p[i-1]*5;
		z[i]=z[i-1]*5+1;
	}
	n=fact(a);
	m=fact(a+1);
	if (m==n) n=-1;
	if (n==0) n++;
	printf("%i",n);
	return 0;
}