Pagini recente » Cod sursa (job #363096) | Cod sursa (job #1246148) | Cod sursa (job #882566) | Cod sursa (job #992718) | Cod sursa (job #1810744)
#include <cstdio>
using namespace std;
int v[100],sol[500000],ciur[101],prim[100];
void inmultsol (int x){
int i,t=0;
for (i=1;i<=sol[0];i++){
sol[i]=sol[i]*x+t;
t=sol[i]/10;
sol[i]%=10;
}
while (t>0){
sol[++sol[0]]=t%10;
t/=10;
}
}
int main()
{
FILE *fin=fopen ("factoriale.in","r");
FILE *fout=fopen ("factoriale.out","w");
int n,k,i,x,j,el=0,p;
fscanf (fin,"%d%d",&n,&k);
for (i=2;i<=100;i++){
if (ciur[i]==0){
prim[++el]=i;
for (j=i*2;j<=100;j+=i)
ciur[j]=1;
}
}
for (i=1;i<=n;i++){
fscanf (fin,"%d",&x);
for (j=1;j<=el;j++){
p=prim[j];
while (p<=x){
v[prim[j]]=v[prim[j]]+x/p;
p*=prim[j];
}
}
}
sol[0]=sol[1]=1;
for (i=1;i<=el;i++){
//if (i==el)
// printf ("a");
if (v[prim[i]]%k!=0){
for (j=1;j<=k-v[prim[i]]%k;j++){
inmultsol(prim[i]);
}
}
}
for (i=sol[0];i>0;i--)
fprintf (fout,"%d",sol[i]);
return 0;
}