Pagini recente » Cod sursa (job #2243875) | Cod sursa (job #2751357) | Cod sursa (job #877200) | Cod sursa (job #3156884) | Cod sursa (job #378353)
Cod sursa(job #378353)
#include<stdio.h>
#include<math.h>
int m[100001],n,k,f[101],f2[101];
void inmul (int b)
{
int i;
int x, t=0;
for(i=1;i<=m[0] || t; i++)
{
if (i>m[0])
m[i] = 0;
x=m[i]*b+t;
t=x/10;
m[i]=x%10;
}
m[0]=i-1;
}
int prim (int x)
{
int lim,d;
if(x%2==0 && x!=2)
return 0;
lim=sqrt(x);
for(d=3;d<=lim;d++)
if(x%d==0)
return 0;
return 1;
}
int main ()
{
int i,j,val,pr,rad,cj;
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&val);
for(j=2;j<=val;j++)
if(prim(j))
{
cj=j;
while(val>=cj)
{
f[j]+=(val/cj);
cj*=j;
} //while
} //if
} //for
for(i=2;i<=97;i++)
{
while(f[i]%k!=0)
{
f2[i]++;
f[i]++;
}
}
m[0]=1;
m[1]=1;
for(i=2;i<=97;i++)
{
while(f2[i])
{
f2[i]--;
inmul(i);
} //while
} // for
for(i=m[0];i>=1;i--)
printf("%d",m[i]);
printf("\n");
return 0;
} //main