Cod sursa(job #137261)

Utilizator raduzerRadu Zernoveanu raduzer Data 17 februarie 2008 10:41:33
Problema Factoriale Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasa a 9-a Marime 0.8 kb
#include <stdio.h>

int n,m,a[110],b[110],r[110],rez[5000],x;

 void nrm(int x ) 
{
	int i, t = 0;
	for (i = 1; i <= rez[0] || t; i++, t /= 10) rez[i] = (t+=rez[i]*x) % 10;
	rez[0] = i - 1;
}
int main()
{
	freopen("factoriale.in","r",stdin);
	freopen("factoriale.out","w",stdout);
	scanf("%d%d",&n,&m);
	int i,j,l;
	for (i=1; i<=n; ++i) scanf("%d",&a[i]);
	for (i=1; i<=n; ++i)
	{
		for (l=2; l<=a[i]; ++l)
		{
			x=l;
			for (j=2; j<=x; ++j)
			{
				while (x %j==0)
				{
					++b[j];
					x/=j;
				}
			}
		}
	}
	for (i=2; i<=100; ++i)
	{
		if (b[i]>0)
		{
			if (b[i]%m>0) r[i]=m-(b[i]%m);
		}
	}
	rez[0]=1;
	rez[1]=1;
	for (i=2; i<=100; ++i)
	{
		for (j=1; j<=r[i]; ++j)
		{
			nrm(i);
		}
	}
	for (i=rez[0]; i>0; --i) printf("%d",rez[i]);
	printf("\n");
	return 0;
}