Pagini recente » Cod sursa (job #2665103) | Cod sursa (job #2061358) | Cod sursa (job #1157600) | Cod sursa (job #2917691) | Cod sursa (job #349356)
Cod sursa(job #349356)
#include<stdio.h>
struct pro{
int nr,div;} v[101];
int a[20000]={1,1};
int N,K,p,rez=1;
void pow(int l[],int T)
{
for(int i=1;i<=a[0];++i)
a[i]=a[i]*T;
for(int i=1;i<=a[0];++i)
{
if(a[i]>9)
{
a[i+1]=a[i]/10+a[i+1];
a[i]=a[i]%10;
if(a[0]<i+1)
++a[0];
}
}
}
void desc(int K)
{
int i=K,S=0,o,x;
while(i)
{
S=S+v[i].nr;
x=i;
o=2;
while(x!=1)
{
while(x%o==0&&x!=1)
{
x=x/o;
v[o].div=v[o].div+S;
}
++o;
}
--i;
}
}
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d%d",&N,&K);
for(int i=1;i<=N;++i)
{
scanf("%d",&p);
++v[p].nr;
}
for(int i=100;i>=1;--i)
if(v[i].nr>=1)
{
desc(i);
i=0;
}
for(int i=1;i<=100;++i)
if(v[i].div%K!=0)
{
for(int j=1;j<=(v[i].div%K)>=1;++j)
{ pow(a,i);
++v[i].div;
}
}
for(int i=a[0];i>=1;--i)
printf("%d",a[i]);
}