Pagini recente » Cod sursa (job #1479093) | Cod sursa (job #619991) | Cod sursa (job #739180) | Cod sursa (job #753410) | Cod sursa (job #703828)
Cod sursa(job #703828)
#include <cstdio>
#include <bitset>
using namespace std;
bitset <105> a;
int c[105],puteri[105],psec[105],prime[50],dim,af[105];
void desc (int n){
int i;
if(a[n]!=0)
puteri[n]=0;
for(i=1;i<=dim&&n!=1;++i){
for(;n%prime[i]==0;){
n/=prime[i];
++puteri[prime[i]];
}
}
}
void inm (int i){
int j,t=0;
for(j=1;j<=af[0];++j){
af[j]=af[j]*i+t;
t=af[j]/10;
af[j]=af[j]%10;
}
for(;t;){
af[++af[0]]+=t%10;
t/=10;
}
}
int main () {
int n,i,k,j,x;
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d %d",&n,&k);
for(i=1;i<=n;++i)scanf("%d",&c[i]);
for(i=2;i*i<=100;++i){
if (a[i]==0)for(j=i+i;j<=100;j+=i)a[j]=1;
}
a[1]=1;
for(i=1;i<=100;++i)if(a[i]==0)prime[++dim]=i;
//fprintf(stderr,"%d\n",dim);
//for(i=1;i<=dim;++i)fprintf(stderr,"%d ",prime[i]);
for(i=1;i<=n;++i){
for(j=1;j<=100&&c[i]>=j;++j){
desc(j);
}
}
//for(i=2;i<=10;++i)fprintf(stderr, "%d ",puteri[i]);
af[0]=1;
af[1]=1;
for(i=1;i<=100;++i){
if(puteri[i]!=0)
if(puteri[i]%k!=0){
x=k-puteri[i]%k;
for(;x;){
inm(i);
--x;
}
}
}
for(i=af[0];i;--i)printf("%d",af[i]);
return 0;
}