Pagini recente » Clasamentul arhivei ACM | Cod sursa (job #1536223) | Cod sursa (job #908401) | Cod sursa (job #878931) | Cod sursa (job #250965)
Cod sursa(job #250965)
#include <stdio.h>
int prim[100],x,n,k,i,d,e,j,rez,max;
void fact(int a)
{
e=0;
d=2;
while(a%d==0)
{
a/=d;
e++;
}
if (e>0)
prim[d]+=e;
if (max<d) max=d;
d=3;
while(a!=1)
{
e=0;
while(a%d==0)
{
a/=d;
e++;
}
if (e>0)
prim[d]+=e;
if (max<d) max=d;
d+=2;
}
}
int power(int a, int b)
{
if (b==1) return a;
else
if (b%2==0) {x=power(a,b/2);return x*x;}
else
if (b%2==1) {x=power(a,b/2);return x*x*a;}
}
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d %d",&n,&k);
max=0;
for (i=1;i<=n;++i)
{
scanf("%d", &x);
for (j=2;j<=x;++j)
fact(j);
}
rez=1;
for (i=2;i<=max;++i)
if (prim[i]>0)
if (prim[i]%k!=0)
rez*=power(i,k-prim[i]%k);
printf("%lld\n", rez);
return 0;
}