Cod sursa(job #206867)

Utilizator IrnukIrina Grosu Irnuk Data 10 septembrie 2008 12:33:42
Problema Factoriale Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
/*factoriale*/


#include<fstream.h>
#include<math.h>

long v[100],n,k,x,prime[30];
long long numar=1,nr;

ifstream fin("factoriale.in");
ofstream fout("factoriale.out");

void prim()
{
	long i,ok,j;
	double d;
	for(i=2;i<98;i++)
	{
		ok=0;
		d=sqrt(i);
		for(j=2;j<=d && ok==0;j++)
			if(i%j==0)
				ok=1;
		if(ok==0)
			prime[++prime[0]]=i;
	}

}

void fact(int x)
{
	long sv=x,k,i,nr;
	for(i=2;i<=sv;i++)
	{
		k=1;
		nr=i;
		while(nr!=1)
		{
			while(nr%prime[k]==0 && nr!=1)
			{
				nr/=prime[k];
				v[prime[k]]++;
			}
			k++;
		}

	}
}
/*
void aduna(long nr)
{

}
*/
int main()
{
	long i;
	fin>>n>>k;
        prim();
	for(i=0;i<n;i++)
	{
		fin>>x;
		fact(x);
	}

	for(i=2;i<98;i++)
	{
		if(v[i]!=0)
		{
			if(v[i]%k!=0)
			{
				nr=(v[i]/k+1)*k-v[i];
				nr=nr*i;
				numar=numar*i*nr;
			//	aduna(nr);
			}
		}
	}

	fout<<numar<<'\n';
	fout.close();
	return 0;
}