Pagini recente » Cod sursa (job #546649) | Cod sursa (job #856991) | Cod sursa (job #1974157) | Cod sursa (job #1022179) | Cod sursa (job #1429988)
#include <stdio.h>
#define MAXL 10000
int pr[100], p[100], dr = 0;
int rez[MAXL], drez = 0;
inline void prod(int x){
int i, tr = 0;
for(i = 0; i < drez; i++)
rez[i] *= x;
for(i = 0; i < drez; i++){
rez[i] += tr;
tr = rez[i] / 10;
rez[i] %= 10;
}
while(tr > 0){
rez[i] = tr % 10;
tr /= 10;
i++;
}
drez = i;
}
inline void precalc(){
int i, j;
char g;
for(i = 2; i < 100; i++){
g = 0;
for(j = 2; j * j <= i && !g; j++){
if(i % j == 0)
g = 1;
}
if(!g){
pr[dr] = i;
dr++;
}
}
}
int main(){
FILE *in = fopen("factoriale.in", "r");
int n, k, i, j, l, cj, x;
fscanf(in, "%d%d", &n, &k);
precalc();
for(i = 0; i < n; i++){
fscanf(in, "%d", &x);
for(j = 2; j <= x; j++){
cj = j;
for(l = 0; l < dr; l++){
while(cj % pr[l] == 0){
cj /= pr[l];
p[l]++;
}
}
}
}
fclose(in);
for(i = 0; i < dr; i++)
p[i] = (k - p[i] % k) % k;
rez[0] = 1;
drez = 1;
for(i = 0; i < dr; i++){
for(; p[i] > 0; p[i]--)
prod(pr[i]);
}
FILE *out = fopen("factoriale.out", "w");
for(i = drez - 1; i >= 0; i--)
fputc(rez[i] + '0', out);
fclose(out);
return 0;
}