Pagini recente » Cod sursa (job #1132389) | Cod sursa (job #237769) | Cod sursa (job #1528366) | Cod sursa (job #1702291) | Cod sursa (job #2100879)
#include <cstdio>
const int MAXN = 1e2;
const int MAXF = 1e5;
int p[MAXN + 1], v[MAXF + 1], e[MAXN + 1];
bool ciur[MAXN + 1];
void mult(int x) {
int i = 1, t = 0;
while (i <= v[0] || t > 0) {
t += v[i] * x;
v[i] = t % 10;
++i;
t /= 10;
}
v[0] = i - 1;
}
int main() {
int n, k, m, x, y;
FILE *f = fopen("factoriale.in", "r");
fscanf(f, "%d%d", &n, &k);
m = 0;
for (int i = 2; i * i <= MAXN; ++i) {
if (!ciur[i]) {
p[m++] = i;
for (int j = i * i; j <= MAXN; j += i) {
ciur[j] = 1;
}
}
}
for (int i = 0; i < n; ++i) {
fscanf(f, "%d", &x);
for (int j = 0; j < m; ++j) {
y = p[j];
while (y <= x) {
e[j] += x / y;
y *= p[j];
}
}
}
fclose(f);
v[0] = v[1] = 1;
for (int i = 0; i < m; ++i) {
if (e[i] % k) {
x = k - e[i] % k;
for (int j = 0; j < x; ++j) {
mult(p[i]);
}
}
}
f = fopen("factoriale.out", "w");
for (int i = v[0]; i > 0; --i) {
fprintf(f, "%d", v[i]);
}
fclose(f);
return 0;
}