Pagini recente » Cod sursa (job #404385) | Cod sursa (job #1212719) | Cod sursa (job #65885) | Cod sursa (job #861128) | Cod sursa (job #504986)
Cod sursa(job #504986)
#include <stdio.h>
FILE*f=fopen("factoriale.in","r");
FILE*g=fopen("factoriale.out","w");
int X,n,z,i,j,k,x,p[50],v[102];
int sol[20000];
void inmult(int H[],int X){
int i;
int T=0;
for (i=1;i<=H[0];i++){
H[i]=H[i]*X+T;
T=H[i]/10;
H[i]=H[i]%10;
}
while (T){
H[++H[0]]=T%10;
T/=10;
}
}
int main() {
for(i=2;i<=100;i++)
if(v[i]==0){
for(j=2*i;j<=100;j+=i)
v[j]=1;
p[++k]=i;
}
for(i=1;i<=100;i++)
v[i]=0;
fscanf(f,"%d%d",&n,&z);
for(i=1;i<=n;i++){
fscanf(f,"%d",&x);
for(j=2;j<=x;j++){
k=1;
X=j;
while(X!=1){
while(X%p[k]==0){
v[p[k]]++;
X/=p[k];
}
k++;
}
}
}
sol[0]=sol[1]=1;
for(i=2;i<=100;i++)
if(v[i]%z!=0)
for(j=1;j<=(z-v[i]%z);j++)
inmult(sol,i);
for(i=sol[0];i;i--)
fprintf(g,"%d",sol[i]);
fclose(g);
fclose(f);
return 0;
}