Cod sursa(job #314307)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 11 mai 2009 11:03:50
Problema Factorial Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>
#include<math.h>
//#include<conio.h>

int put(int x)
{
	int k=0;
	while(x%5==0) { ++k; x/=5; }
	return k;
}

int main()
{
	//clrscr();
 
	freopen("fact.in","r",stdin);
	freopen("fact.out","w",stdout);

	int ok=1,t,r,p,i,t1,t2,k1,k2=0,k;

	scanf("%d",&p);
	if(p==0) { printf("1"); return 0; }
 
	for(i=1; k2<p; ++i)
{
		k2=(pow(5,i)-1)/4;
		t2=pow(5,i);
	}
	if(k2==p) printf("%d",t2);
	else
	{
		t1=t2/5;
		k1=(pow(5,put(t1))-1)/4;
		if(p>(k1+k2)/2)
		{
			k=t2+5;
			while(k2>=p)
			{
				k-=5; t=k;
				while(t%5==0 && k2>=p) t/=5, --k2;
				if(k2<p) { printf("-1"); return 0; }
			}
		}
		else
		{
			k=t1;
			while(k1<p) { k+=5; k1+=put(k); }
		}
	}
	printf("%d",k);
    
	return 0;
}