Pagini recente » Cod sursa (job #1620307) | Cod sursa (job #2186439) | Cod sursa (job #3139115) | Cod sursa (job #2494807) | Cod sursa (job #140328)
Cod sursa(job #140328)
#include<stdio.h>
#define nmax 100
int a[nmax];
int b[nmax];
int sol[nmax];
void inmulteste(int sol[nmax], int nr)
{
int i, t = 0;
for (i = 1; i <= sol[0] || t; i++, t /= 10)
sol[i] = (t += sol[i] * nr) % 10;
sol[0] = i - 1;
}
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
int n,k;
long long solutie=1;
int i,j,aux,aux1;
int maxim1=0,maxim2=0;
scanf("%d%d",&n,&k);
for(i=1; i<=n; ++i){
scanf("%d",&aux);
a[aux]=1;
if( aux >maxim1)
maxim1=aux;
}
for(i=maxim1,j=0; i>1; --i){
if( a[i] )
++j;
a[i]=j;
}
for(i=2; i<=nmax && a[i]; ++i){
if( !b[i])
for(j=i+i,aux1=2; j<=maxim1 && j<=nmax; j+=i,++aux1){
b[j]=1;
a[i]+=(aux1*a[j]);
}
}
sol[0]=1;
sol[1]=1;
for(i=2; i<=nmax && i<=maxim1; ++i)
if( a[i] && !b[i]){
if( a[i]!=k)
{
if( a[i]<k )
inmulteste(sol, (k-a[i])*i);
else
if(a[i]>k){
aux=a[i]%k;
if( aux ){
aux1=aux;
while( aux1%k )
++aux1;
inmulteste(sol,(aux1-aux)*i);
}
}
}
}
for(i=sol[0]; i>0; --i)
printf("%d",sol[i]);
printf("\n");
return 0;
}