Pagini recente » Cod sursa (job #1511690) | Cod sursa (job #1422249) | Cod sursa (job #3202709) | preONI 2005 runda #1 - solutii | Cod sursa (job #303147)
Cod sursa(job #303147)
// factoriale.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
int e[101][101];
int element[101];
int numere[101];
bool ciu[101];
int m[101];
int n,k,maxim=0,a,t,l;
char c[1000005];
void ciur()
{
for(int i=2;i*i<=100;i++)
if(!ciu[i])
for(int j=i*i;j<=100;j=j+i)
ciu[j]=true;
}
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",&a);
numere[a]=true;
if(a>maxim)
maxim=a;
}
ciur();
for(int i=2;i<=maxim;i++)
{
int copiei=i;
for(int j=2;j<=maxim;j++)
{
if(!ciu[j] && copiei%j==0)
while(copiei%j==0)
{
element[j]++;
copiei=copiei/j;
}
if(copiei==1)
break;
}
if(numere[i])
for(int j=1;j<=maxim;j++)
m[j]=m[j]+element[j];
}
c[0]=1;c[1]=1;
for(int i=1;i<=maxim; i++)
if(m[i]%k)
for(int j=1;j<=k-m[i]%k;j++)
{
l=1;
while(l<=c[0] || t)
{
c[l]=(t=t+c[l]*i)%10;
t=t/10;
l++;
}
while(c[c[0]+1])
c[0]++;
}
for(int i=c[0];i>=1;i--)
printf("%d",c[i]);
printf("\n");
return 0;
}