Pagini recente » Cod sursa (job #2598080) | Cod sursa (job #2932315) | Cod sursa (job #377694) | Cod sursa (job #1719528) | Cod sursa (job #138581)
Cod sursa(job #138581)
#include <stdio.h>
long n,k,ak,i,p[200],q,j,r,l,rez[10000],ok,nr,e[200];
long a[102],baza=1000000,exponent;
int main(){
freopen ("factoriale.in","r",stdin);
freopen ("factoriale.out","w",stdout);
scanf("%ld %ld",&n,&ak);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
p[1]=2;
p[2]=3;
q=2;
i=5;
while (i<=100){
ok=1;
j=1;
while (p[j]*p[j]<=i){
if (i%p[j]==0){ok=0;break;}
j++;
}
if (ok)p[++q]=i;
i+=2;
}
for (i=1;i<=q;i++){
nr=p[i];
while (nr<=100){
for (j=1;j<=n;j++)
e[p[i]]+=a[j]/nr;
nr*=p[i];
}
}
l=1;
rez[1]=1;
for (i=1;i<=q;i++)
if (e[p[i]]%ak!=0){
exponent=ak-e[p[i]]%ak;
for (j=1;j<=exponent;j++){
r=0;
for (k=1;k<=l;k++){
rez[k]=rez[k]*p[i]+r;
r=rez[k]/baza;
rez[k]%=baza;
}
while (r){
l++;
rez[l]=r%baza;
r/=baza;
}
}
}
printf("%ld",rez[l]);
for (i=l-1;i;i--)
if (rez[i]>=100000)
printf("%ld",rez[i]);
else if (rez[i]>=10000)
printf("0%ld",rez[i]);
else if (rez[i]>=1000)
printf("00%ld",rez[i]);
else if (rez[i]>=100)
printf("000%ld",rez[i]);
else if (rez[i]>=10)
printf("0000%ld",rez[i]);
else printf("00000%ld",rez[i]);
printf("\n");
return 0;
}