Cod sursa(job #583572)

Utilizator rendorzegAndrei Pavel rendorzeg Data 20 aprilie 2011 23:02:54
Problema Factorial Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<stdio.h>
int main()
{
	unsigned long a,z[16],p[16],i,j;
	long n;
	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=0;
	for (j=i;j>=1;j--)
		if (a>=z[j])
		{
			n+=(a/z[j])*p[j];
			a%=z[j];
		}
	j=1;
	while (n>p[j])
	{
		j++;
		if ((n%p[j])==0)
		{
			while (n>p[j])
				j++;
			if (n==p[j]) break;
			else 
			{
				n=-1;
				break;
			}
		}
	}
	if (n==0) n++;
	printf("%i",n);
	return 0;
}