Pagini recente » Cod sursa (job #1650973) | Cod sursa (job #2150510) | Cod sursa (job #441193) | Cod sursa (job #2769511) | Cod sursa (job #1357494)
#include <fstream>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n, k, p, x;
int prime[110], sol[10000], f[110];
void inmulteste(int x) {
int t = 0;
for (int i = 1; i <= sol[0]; i++){
sol[i] = sol[i] * x + t;
t = sol[i] / 10;
sol[i] %= 10;
}
while (t != 0){
sol[++sol[0]] = t % 10;
t /= 10;
}
}
int main() {
fin >> n >> p;
for (int i = 2; i <= 100; i++) {
if (f[i])
continue;
prime[++k] = i;
for (int j = i + i; j <= 100; j += i)
f[j] = 1;
}
for (int i = 1; i <= n; i++) {
fin >> x;
for (int j = 1; j <= k; j++)
for (int ii = prime[j]; ii <= x; ii *= prime[j])
f[prime[j]] += x / ii;
}
sol[0] = sol[1] = 1;
for (int i = 1; i <= k; i++) {
int x = prime[i];
if (f[x] % p == 0)
continue;
for (int j = 1; j <= p - f[x] % p; j++)
inmulteste(x);
}
for (int i = sol[0]; i >= 1; i--)
fout << sol[i];
return 0;
}