Pagini recente » Cod sursa (job #1532634) | Cod sursa (job #1277254) | Cod sursa (job #42743) | Rating Rosu Dragos (Rosudrg) | Cod sursa (job #1143676)
#include <cstdio>
using namespace std;
int fr[105][105],p[105];
inline void PreCalcul()
{
int i,n,d;
for(i=1;i<=100;++i)
{
n=i;
while(n%2==0)
{
++fr[i][2];
n/=2;
}
d=3;
while(n>1 && d*d<=n)
{
while(n%d==0)
{
++fr[i][d];
n/=d;
}
d+=2;
}
if(n>1)
++fr[i][n];
}
}
int main()
{
int N,K,i,r,x,j,k;
long long sol=1,pr;
freopen ("factoriale.in","r",stdin);
freopen ("factoriale.out","w",stdout);
PreCalcul();
scanf("%d%d", &N,&K);
for(i=1;i<=N;++i)
{
scanf("%d", &x);
for(j=1;j<=x;++j)
for(k=1;k<=100;++k)
p[k]+=fr[j][k];
}
for(i=1;i<=100;++i)
{
r=p[i]%K;
if(r)
r=K-r;
for(pr=1,j=1;j<=r;++j)
pr*=i;
sol*=pr;
}
printf("%lld\n", sol);
return 0;
}