Pagini recente » Cod sursa (job #1732179) | Cod sursa (job #2115073) | Cod sursa (job #606186) | Cod sursa (job #2970657) | Cod sursa (job #209154)
Cod sursa(job #209154)
#include <stdio.h>
#include <fstream.h>
#define BASE 10
typedef int Huge[512];
void Mult(Huge H, unsigned long X){
int i;
unsigned long T=0;
for (i=1;i<=H[0];i++)
{ H[i]=H[i]*X+T;
T=H[i]/10;
H[i]=H[i]%10;
}
while (T)
{ H[++H[0]]=T%10;
T/=10;
}
}
int n,k;
int a[101],b[101];
bool flag[101];
int i,j,aux,counter;
Huge x;
int main(){
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d %d",&n,&k);
for(i=0;i<n;++i)
scanf("%d",&aux),
++b[aux];
for(i=2;i<=100;++i)
for(j=2;j<=i;++j)
a[j]+=b[i];
for(i=4;i<=100;++i)
b[i] = 0;
b[2]=a[2];
b[3]=a[3];
for(i=4;i<=100;++i)
if(a[i]) //daca nr i exista in sir, ii cauta factori primi si ii memoreaza in tabloul b
{
aux = i;
for(j=2;j<=i&&aux>1;++j) // aux e descompus in factori primi
if(!(aux%j))
{
counter = 0;
while(aux/j&&!(aux%j))
aux /= j,
++counter;
b[j] += counter * a[i];
}
}
x[0]=x[1]=1;
for(i=2;i<=100;++i)
{
if(b[i]%k)
b[i] = k - b[i] % k;
else
b[i] = 0;
while(b[i])
{
Mult(x,i);
--b[i];
}
}
for(i=x[0];i;--i)printf("%d",x[i]);
return 0;
}