Pagini recente » Cod sursa (job #1696036) | Cod sursa (job #2174696) | Cod sursa (job #880146) | Cod sursa (job #1548815) | Cod sursa (job #3224481)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
const int baza = 10000;
int n, k, i, j, x[102], ma;
int m[102], r[1002] = {1, 1};
static inline void Prod(int x) {
int t = 0, i = 1;
while(i <= r[0] || t) {
t += r[i] * x;
r[i] = t % baza;
t /= baza;
i++;
}
r[0] = i - 1;
}
static inline void Desc(int n, int mult) {
int d = 2;
while(d * d <= n) {
int e = 0;
while(n % d == 0) {
e++;
n /= d;
}
if(e) m[d] += e * mult;
d++;
}
if(n > 1) m[n] += mult;
}
int main() {
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n >> k;
for(i = 1; i <= n; i++) {
fin >> x[i];
ma = max(ma, x[i]);
}
for(i = 1; i <= ma; i++) {
int mult = 0;
for(j = 1; j <= n; j++) {
if(i <= x[j]) mult++;
}
Desc(i, mult);
}
for(i = 1; i <= ma; i++) {
if(m[i] == 0) continue;
if(m[i] % k != 0) {
for(j = 1; j <= k - m[i] % k; j++) Prod(i);
}
}
fout << r[r[0]];
for(i = r[0] - 1; i >= 1; i--) fout << setfill('0') << setw(4) << r[i];
return 0;
}