Pagini recente » Cod sursa (job #2126432) | Cod sursa (job #423362) | Cod sursa (job #900506) | Cod sursa (job #224312) | Cod sursa (job #340309)
Cod sursa(job #340309)
#include <stdio.h>
long a[102],sol[10002],c[102],n,k,i,j,max;
void inmultire(long b){
long t,i;
i=1;
t=0;
while(i<=sol[0]||t){
t=sol[i]*b+t;
sol[i]=t%10;
t/=10;
i++;
}
sol[0]=i-1;
}
void calcul(long n){
long i,x,t;
for(t=2;t<=n;t++){
x=t;
i=2;
while(x%i==0){
x/=i;
a[i]++;
}
i=3;
do{
while(x%i==0){
x/=i;
a[i]++;
}
i+=2;
}while(x!=1);
}
}
int main(){
FILE *f,*g;
f=fopen("factoriale.in","r");
g=fopen("factoriale.out","w");
fscanf(f,"%ld%ld",&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%ld",&c[i]);
if(max<c[i]) max=c[i];
}
for (i=1;i<=max;i++)
a[i]=0;
sol[0]=1;
sol[1]=1;
for(i=1;i<=n;i++)
calcul(c[i]);
for(i=2;i<=max;i++)
if(a[i]%k)
for(j=1;j<=k-a[i]%k;j++)
inmultire(i);
for(i=sol[0];i>=1;i--)
fprintf(g,"%ld",sol[i]);
fprintf(g,"\n");
fclose(f);
fclose(g);
return 0;
}