Pagini recente » Cod sursa (job #513327) | Cod sursa (job #2109) | Cod sursa (job #2624863) | Cod sursa (job #3122920) | Cod sursa (job #137192)
Cod sursa(job #137192)
#include <stdio.h>
#include <math.h>
int i,j,k,n,m,t,cop;
int x[110],d[110],div[110],da[110],a[1100];
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
for (i=1; i<=100; i++) { x[i]=0;d[i]=0;div[i]=0;da[i]=0;}
for (i=1; i<=1000; i++) a[i]=0;
scanf("%d%d",&n,&t);
for (i=1; i<=n; i++)
scanf("%d",&x[i]);
m=0;
for (i=2; i<=100; i++)
{
int gas=1;
for (k=2; k<=sqrt(i); k++)
if (i%k==0)
{
gas=0;break;
}
if (gas) {m++;d[m]=i;}
}
for (i=1; i<=n; i++)
{
for (j=1; j<=x[i]; j++)
{
k=0;cop=j;
while (cop!=1)
{
k++;
while (cop%d[k]==0 && cop>1)
{
div[k]++;
cop/=d[k];
}
}
}
}
for (i=1; i<=m; i++)
if (div[i]%t!=0) da[i]=t-(div[i]%t);
else da[i]=0;
a[1000]=1;
for (i=1; i<=m; i++)
for (j=1; j<=da[i]; j++)
{
for (k=1000; k>=1; k--)
a[k]*=d[i];
for (k=1000; k>=1; k--)
{
a[k-1]+=a[k]/10;
a[k]%=10;
}
}
for (i=1; i<=1000; i++)
if (a[i]!=0) {j=i;break;}
for (i=j; i<=1000; i++)
printf("%d",a[i]);
printf("\n");
return 0;
}