Pagini recente » Cod sursa (job #2023937) | Cod sursa (job #1907259) | Cod sursa (job #1285388) | Cod sursa (job #1592380) | Cod sursa (job #2873145)
#include <fstream>
using namespace std;
ifstream cin("factoriale.in");
ofstream cout("factoriale.out");
bool ciur[100005];
int ciur2[100005];
int maxx=0;
int v2[1000005],v[1000005],v3[100005];
void AtribMic(int x[], int m)
{
x[0]=0;
if(m==0)
x[(x[0]=1)]=0;
else
for(; m; m/=10)
x[++x[0]]=m%10;
}
void ProdusMare(int x[], int y[])
{
int l,r,t=0;
int z[1000005];
z[0]=x[0]+y[0]-1;
for(l=1; l<=x[0]+y[0]; l++)
z[l]=0;
for(l=1; l<=x[0]; l++)
for(r=1; r<=y[0]; r++)
z[l+r-1]+=x[l]*y[r];
for(l=1; l<=z[0]; l++)
{
t+=z[l];
z[l]=t%10;
t/=10;
}
if(t)
z[++z[0]]=t;
for(l=0; l<=z[0]; l++)
x[l]=z[l];
}
int main()
{
ciur[0] = 1;
ciur[1] = 1;
for(int i = 2; i < 10000; i++)
if(ciur[i] == 0)
for(int j = i * i; j < 100000; j = j + i)
ciur[j] = 1;
int n,k,a,p=1,j;
cin>>n>>k;
int divizor,exp;
for(int i=0; i<n; i++)
{
cin>>a;
for(int cj=2; cj<=a; cj++)
{
j=cj;
divizor = 2;
while(divizor * divizor <= j)
{
exp = 0;
while(j % divizor == 0)
{
j = j / divizor;
exp++;
}
if(exp > 0)
{
ciur2[divizor]+=exp;
maxx=max(maxx,divizor);
}
divizor++;
}
if(j > 1)
{
ciur2[j]++;
maxx=max(maxx,j);
}
}
}
/// cout<<ciur2[2]<<"\n";
v2[0]=1;
v2[1]=1;
for(int i=2; i<=maxx; i++)
{
/// cout<<i<<" "<<ciur2[i]<<'\n';
p=1;AtribMic(v,p);
while(ciur2[i]%k!=0)
{
ciur2[i]++;
AtribMic(v3,i);
ProdusMare(v,v3);
}
ProdusMare(v2,v);
}
for(int i=v2[0]; i>=1; i--)
cout<<v2[i];
return 0;
}