Pagini recente » Cod sursa (job #723577) | Cod sursa (job #3185095) | Cod sursa (job #2098130) | Cod sursa (job #1125333) | Cod sursa (job #1424209)
#include <stdio.h>
#define BAZA 10
#define MAXX 100
#define MAXP 25
#define MAXC 100000
int a[MAXC+1], c[MAXX+1], v[MAXP], fr[MAXP], p;
inline void inmult(int a[], int x){
int i, tr=0;
for(i=1; i<=a[0]; i++){
tr+=a[i]*x;
a[i]=tr%BAZA;
tr/=BAZA;
}
while(tr>0){
a[++a[0]]=tr%BAZA;
tr/=BAZA;
}
}
inline void ciur(){
int i, j;
for(i=2; i*i<=MAXX; i++){
if(c[i]==0){
for(j=i*i; j<=MAXX; j+=i){
c[j]=1;
}
}
}
for(i=2; i<=MAXX; i++){
if(c[i]==0){
v[p++]=i;
}
}
}
int main(){
int n, k, i, x, j, t, cx;
FILE *fin, *fout;
fin=fopen("factoriale.in", "r");
fout=fopen("factoriale.out", "w");
fscanf(fin, "%d%d", &n, &k);
ciur();
for(j=0; j<n; j++){
fscanf(fin, "%d", &x);
for(i=0; i<p; i++){
t=v[i];
cx=x;
while(cx>=t){
fr[i]+=cx/t;
t*=v[i];
}
}
}
a[++a[0]]=1;
for(i=0; i<p; i++){
fr[i]%=k;
if(fr[i]!=0){
for(j=0; j<k-fr[i]; j++){
inmult(a, v[i]);
}
}
}
for(i=a[0]; i>0; i--){
fputc(a[i]+'0', fout);
}
fputc('\n', fout);
fclose(fin);
fclose(fout);
return 0;
}