Cod sursa(job #146985)

Utilizator AndreyPAndrei Poenaru AndreyP Data 2 martie 2008 14:41:57
Problema Factoriale Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
int c[101];
int A[500],B;
int main()
{
	freopen("factoriale.in","r",stdin);
	freopen("factoriale.out","w",stdout);
	int p[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
	int n,k,x,i,j,t,w,xmax=0;
	//long long r=1;
	A[0]=A[1]=1;
	scanf("%d%d",&n,&k);
	for(i=0; i<n; i++)
	{
		scanf("%d",&x);
		if(x>xmax)
			xmax=x;
		for(j=2; j<=x; j++)
		{
			w=j;
			for(t=0; (t<25)&&(w!=1); t++)
			{
				while(w%p[t]==0)
				{
					w=w/p[t];
					c[p[t]]++;
				}
			}
		}
	}
	t=0;
	for(w=2; w<=xmax; w++)
	{
		if(c[w])
		{
			if(c[w]%k!=0)
			{
				B=w;
				for(j=k-c[w]%k; j>0; j--)
				{
					for (i=1; (i<=A[0])||(t); i++, t/=10)
						A[i]=(t+=A[i]*B)%10;
					A[0] = i - 1;
				}
			}
		}
	}
	//printf("%lld\n",r);
	for(i=A[0]; i>0; i--)
		printf("%d",A[i]);
	printf("\n");
	return 0;
}