Pagini recente » Cod sursa (job #2056217) | Cod sursa (job #1806874) | Cod sursa (job #1334868) | Cod sursa (job #1842740) | Cod sursa (job #2734766)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int fr[105][105], frT[105], rez[100005];
bool p[105];
vector<int> prime;
void inmult(int val){
int t = 0;
for(int i = 1; i <= rez[0]; ++i){
rez[i] = rez[i] * val + t;
t = rez[i] / 10;
rez[i] %= 10;
}
while(t)
rez[++rez[0]] = t % 10, t /= 10;
}
int main()
{
for(int i = 2; i <= 100; ++i)
if(p[i] == 0)
{
prime.push_back(i);
for(int j = i + i; j <= 100; j += i)
p[j] = 1;
}
for(int val = 1; val <= 100; ++val){
int j = 0;
while(j < (int)(prime.size()) && prime[j] <= val){
int ax = prime[j], cnt = 0;
while(ax <= val)
{
cnt += val / ax;
ax *= prime[j];
}
fr[val][prime[j]] = cnt;
++j;
}
}
int n, k;
fin >> n >> k;
for(int i = 1; i <= n; ++i){
int x;
fin >> x;
for(int val = 1; val <= 100; ++val)
frT[val] += fr[x][val];
}
rez[0] = rez[1] = 1;
for(int val = 1; val <= 100; ++val)
if(frT[val] > 0 && frT[val] % k != 0)
for(int i = 1; i <= k - frT[val] % k; ++i)
inmult(val);
for(int i = rez[0]; i >= 1; --i)
fout << rez[i];
return 0;
}