Pagini recente » Cod sursa (job #2774158) | Cod sursa (job #2733429) | Cod sursa (job #2258128) | Cod sursa (job #2798153) | Cod sursa (job #1810867)
#include <fstream>
using namespace std;
ifstream fin ("factoriale.in");
ofstream fout("factoriale.out");
long long i,j,b[110],n,k,aux,h,e[110],f[110],nr,p[110],z,x;
long long ridicare(long long a, long long b)
{
long long p=1;
while(b!=0)
{
if(b%2==1) {
p*=a;
}
a*=a;
b/=2;
}
return p;
}
int main ()
{
for(i=2;i<=100;i++)
if(b[i]==0)
{
p[++h]=i;
for(j=i+i;j<=100;j+=i)
b[j]=1;
}
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>x;
for(j=1;j<=x;j++)
f[j]++;
if(x>z)
z=x;
}
for(i=2;i<=z;i++)
{
aux=i;
for(j=1;j<=h;j++)
{
if(aux%p[j]==0)
{
nr=0;
while(aux%p[j]==0)
{
aux/=p[j];
nr++;
}
e[p[j]]+=nr*f[i];
}
}
if(aux!=1)
e[aux]+=f[i];
}
long long s=1;
for(i=1;i<=100;i++)
{
if(e[i]!=0)
if(e[i]%k!=0)
s*=ridicare(i, e[i]%k);
}
fout<<s;
fin.close();
fout.close();
return 0;
}