Pagini recente » Cod sursa (job #1291349) | Cod sursa (job #2387589) | Cod sursa (job #1234963) | Cod sursa (job #1474083) | Cod sursa (job #2911290)
#include <fstream>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int n,k,v[105],divizori[105],ciur[105],x,q,f[105],prod=1;
int sir[10005];
void prim()
{
ciur[0]=ciur[1]=1;
for(int i=2;i<=100;i++)
{
if(ciur[i]==0)
{
divizori[++k]=i;
for(int j=2*i;j<=100;j=j+i)
{
ciur[j]=1;
}
}
}
}
void multiply(int nr)
{
int t=0;
for(int i=1;i<=sir[0];i++,t/=10)
{
t+=sir[i]*nr;
sir[i]=t%10;
}
while(t)
{
sir[++sir[0]]=t%10;
t/=10;
}
}
int main()
{
fin>>n>>q;
sir[0]=1;
sir[1]=1;
prim();
for(int i=1;i<=n;i++)
{
fin>>x;
for(int j=2;j<=x;j++)
{
int xy=j;
for(int d=1;divizori[d]*divizori[d]<=j;d++)
{
if(j%divizori[d]==0)
{
while(j%divizori[d]==0)
{
f[divizori[d]]++;
j/=divizori[d];
}
}
}
if(j!=1)
{
f[j]++;
}
j=xy;
}
}
for(int i=1;i<=100;i++)
{
if(f[i])
{
for(int j=1;j<=f[i]%q;j++)
multiply(i);
}
}
for(int i=sir[0];i>=1;i--)
{
fout<<sir[i];
}
}