Pagini recente » Cod sursa (job #159592) | Cod sursa (job #879713) | Cod sursa (job #597317) | Cod sursa (job #575444) | Cod sursa (job #652465)
Cod sursa(job #652465)
#include <stdio.h>
FILE *f=fopen("factoriale.in","r");
FILE *g=fopen("factoriale.out","w");
int n,k,s[111],t,p[31],w[101][101];
bool pr[101];
void ciur(){
for(register int i=2;i<=97;i++){
if(pr[i]==false){
p[++t]=i;
for(register int j=i+i;j<=97;j+=i)
pr[j]=true;
}
}
}
long long up(long long a,int b){
register long long aux;
if(b==0)
return 1;
else{
aux=up(a,b/2);
aux*=aux;
if(b%2==0)
return aux;
else
return aux*a;
}
}
int main(void){
register int i,j,x;
fscanf(f,"%d %d",&n,&k);
ciur();
for(i=2;i<=100;i++){
x=i;
for(register int z=1;z<=t;z++){
w[i][p[z]]=w[i-1][p[z]];
while(x%p[z]==0){
x/=p[z];
w[i][p[z]]++;
}
}
}
for(i=1;i<=n;i++){
fscanf(f,"%d",&x);
for(register int z=1;z<=t;z++){
s[p[z]]+=w[x][p[z]];
}
}
long long sol=1;
for(i=1;i<=t;i++){
int q=s[p[i]]%k;
if(q!=0){
sol*=up(p[i],q);
}
}
fprintf(g,"%lld",sol);
fclose(f);
fclose(g);
return 0;
}