Pagini recente » Cod sursa (job #4945) | Cod sursa (job #1552102) | Cod sursa (job #1859545) | Cod sursa (job #2076841) | Cod sursa (job #1143614)
#include <cstdio>
#include <bitset>
using namespace std;
bitset <110> v;
int l[59],o[59];
int A[100010];
void mul(int A[], int B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void ciur()
{
int i,j;
l[++l[0]]=2;
for(i=3;i*i<110;i+=2)
{
for(j=i*i;j<110;j+=i) v[j]=1;
}
for(i=3;i<110;i+=2) if(!v[i]) l[++l[0]]=i;
}
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
int n,i,k,z,r,q,u,d;
scanf("%d%d",&n,&k);
ciur();
A[++A[0]]=1;
for(i=0;i<n;i++)
{
scanf("%d",&z);
for(r=2;r<=z;r++)
{
u=r;
d=1;
while(u>1)
{
q=0;
while(u%l[d]==0)
{
q++;
u/=l[d];
}
o[l[d]]+=q;
d++;
}
}
}
for(i=2;i<=59;i++)
{
if(o[i]%k!=0) for(r=1;r<=k-o[i]%k;r++) mul(A,i);
}
for(i=A[0];i>=1;i--) printf("%d",A[i]);
}