Pagini recente » Cod sursa (job #3361062) | Cod sursa (job #3361060) | Cod sursa (job #3361031)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
long long n, k, a, nrprime, put;
long long ciur[105], prime[105], putprim[105];
vector<long long> num;
void inmultire(long long fact)
{
long long minte=0;
for(int i=0; i<num.size(); i++)
{
num[i]=num[i]*fact+minte;
minte=num[i]/10;
num[i]%=10;
}
while(minte > 0)
{
num.push_back(minte % 10);
minte /= 10;
}
}
int main()
{
fin >> n >> k;
for(int i=2; i*i<=100; i++)
{
if(ciur[i] == 0)
{
for(int j = i * i; j <= 100; j += i)
{
ciur[j] = 1;
}
}
}
for(int i=2; i<=100; i++)
{
if(ciur[i]==0)
prime[++nrprime]=i;
}
for(int i=1; i<=n; i++)
{
fin >> a;
for(int j=1; j<=nrprime; j++)
{
put=prime[j];
while(put<=a)
{
putprim[j]+=a/put;
put*=prime[j];
}
}
}
num.push_back(1);
for(int i=1; i<=nrprime; i++)
{
long long rest=putprim[i]%k;
if(rest>0)
{
long long need=k-rest;
for(int j=1; j<=need; j++)
{
inmultire(prime[i]);
}
}
}
for(int i=num.size()-1; i>=0; i--)
{
fout << num[i];
}
return 0;
}