Pagini recente » Cod sursa (job #1613458) | Cod sursa (job #3199584) | Cod sursa (job #1811077) | Cod sursa (job #3132156) | Cod sursa (job #652472)
Cod sursa(job #652472)
#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();
long long sol;
for(i=1;i<=n;i++){
fscanf(f,"%d",&x);
for(j=1;j<=t && p[j]<=x;j++){
int nr=0,aux=p[j];
while(aux<=x){
nr+=x/aux;
aux*=p[j];
}
nr=nr%k;
sol*=up(p[j],nr);
}
}
fprintf(g,"%lld",sol);
fclose(f);
fclose(g);
return 0;
}