Cod sursa(job #577066)

Utilizator HoriaClementHoriaC HoriaClement Data 9 aprilie 2011 18:28:04
Problema Factoriale Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;

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

const int N=101;

int n,k,v[N],rez[1000005],prim[27],a,m;

bool c[N];


void ciur()
{
	for(int i=2;i*i<N;++i)
		if(!c[i])
			for(int j=i*i;j<N;j+=i)
				c[j]=true;
	for(int i=2;i<N;++i)
		if(!c[i])
			prim[++m]=i;
}

int poww(int n,int x)
{
	int i,r=0;
	for(i=x;i<=n;i*=x)
		r+=n/i;
	return r;
}

void mul(int a[],int b)
{
	int i,t=0;
	for(i=1;i<=a[0] || t;++i,t/=10)
		a[i]=(t+=a[i]*b)%10;
	a[0]=i-1;
}

void rezi()
{
	in>>n>>k;
	for(int i=1;i<=n;++i)
	{
		in>>a;
		for(int j=1;j<m+1;++j)
			v[j]+=poww(a,prim[j]);
	}
	rez[0]=rez[1]=1;
	for(int i=1;i<=m;++i)
		while(v[i]%k)
		{
			++v[i];
			mul(rez,prim[i]);
		}
	for(int i=rez[0];i;--i)
		out<<rez[i];
}

int main()
{
	ciur();
	rezi();
	return 0;
}