Pagini recente » Cod sursa (job #2668512) | Cod sursa (job #1779044) | Cod sursa (job #2664923) | Cod sursa (job #2560390) | Cod sursa (job #2915251)
#include <fstream>
#include <vector>
using namespace std;
vector<int> v{ 1 };
void multiply(int f) {
unsigned long long temp = 0;
for (int i = 0; i < (int)v.size() ; i++) {
temp += v[i] * f;
v[i] = temp % 10;
temp /= 10;
}
while (temp > 0) {
v.push_back(temp % 10);
temp /= 10;
}
}
int main() {
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n, k;
fin >> n >> k;
int f[25] = {2, 3, 5, 7, 11, 13, 17, 19, 23,
29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97};
int p[25] = {};
for (int i = 0; i < n; i++) {
int x;
fin >> x;
for (int j = 2 ; j <= x ; j++) {
int d = 0;
int aux = j;
while (aux > 1) {
if (aux % f[d] == 0) {
p[d] += 1;
aux /= f[d];
} else d++;
}
}
}
for (int i = 0 ; i < 25 ; i++)
if (p[i] > 0 && p[i] % k != 0) {
int exp;
if (p[i] > k)
exp = k - (p[i] % k);
else
exp = k - p[i];
while (exp > 0) {
multiply(f[i]);
exp--;
}
}
for (int i = v.size() - 1; i >= 0 ; i--)
fout << v[i];
fin.close();
fout.close();
return 0;
}