Pagini recente » Cod sursa (job #516937) | Cod sursa (job #2832507) | Cod sursa (job #966167) | Cod sursa (job #605892) | Cod sursa (job #137590)
Cod sursa(job #137590)
#include <stdio.h>
int nr,p[100],a[105][100],b[105][100],s[100],c[10000];
void ciur(int x)
{
int i,j,prim[200]={0};
for (i=2;i<=x;i++)
{
if (!prim[i])
{
nr++;
p[nr]=i;
for (j=i;j<=x;j+=i)
{
prim[j]=1;
}
}
}
}
void inmultire(int a)
{
int i,minte=0;
for (i=1;i<=c[0];i++)
{
c[i]=c[i]*a+minte;
minte=c[i]/10;
c[i]%=10;
}
while (minte)
{
c[0]++;
c[c[0]]=minte%10;
minte/=10;
}
}
int main()
{
FILE *in,*out;
int i,j,x,aux,n,k;
in=fopen("factoriale.in","r");
out=fopen("factoriale.out","w");
ciur(100);
for (i=1;i<=100;i++)
{
x=i;
for (j=1;j<=nr&&x!=1;j++)
{
while (x%p[j]==0)
{
a[i][j]++;
x/=p[j];
}
}
}
for (i=2;i<=100;i++)
{
for (j=1;j<=nr;j++)
b[i][j]=b[i-1][j]+a[i][j];
}
fscanf(in,"%d%d",&n,&k);
for (i=1;i<=n;i++)
{
fscanf(in,"%d",&x);
for (j=1;j<=nr;j++)
{
s[j]+=b[x][j];
}
}
c[0]=1;
c[1]=1;
for (i=1;i<=nr;i++)
{
if (s[i]%k)
{
aux=(s[i]/k+1)*k-s[i];
for (j=1;j<=aux;j++)
inmultire(p[i]);
}
}
for (i=c[0];i>=1;i--)
{
fprintf(out,"%d",c[i]);
}
fprintf(out,"\n");
fclose(in);
fclose(out);
return 0;
}