Pagini recente » Cod sursa (job #2094969) | Cod sursa (job #2908957) | Cod sursa (job #1233029) | Cod sursa (job #2989349) | Cod sursa (job #504936)
Cod sursa(job #504936)
#include <stdio.h>
#define DIM 101
#define ERA 25
int N, K, F;
int ciur[DIM], A[DIM], P[ERA];
int REZ[1000];
void inmulteste (int A[], int B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; ++i, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void cciur ()
{
int i, j, x = 0;
for (i = 2; i < DIM; ++i)
if ( !ciur[i] )
{
ciur [++x] = i;
for (j = i + i; j < DIM; j += i)
ciur[j] = 1;
}
}
void factori (int X)
{
// int d, r = sqrt (X);
for (int d = 1; d <= ERA; ++d)
while ( !(X % ciur[d]) )
{
P[d] ++;
X /= ciur[d];
}
}
void cit ()
{
int i, f;
scanf ("%d%d", &N, &K);
for (i = 1; i <= N; ++i)
{
scanf ("%d", &F);
for (f = 2; f <= F; ++f)
factori (f);
}
}
void calc ()
{
REZ[0] = REZ[1] = 1;
for (int d = 1, e; P[d]; ++d)
{
if (P[d] % K) e = K - P[d] % K;
else e = 0;
while ( e-- )
inmulteste (REZ, ciur[d]);
}
}
void afs ()
{
for (int i = REZ[0]; i > 0; --i)
printf ("%d", REZ[i]);
}
int main ()
{
freopen ("factoriale.in", "r", stdin);
freopen ("factoriale.out", "w", stdout);
cciur ();
cit ();
calc ();
afs ();
// factori (750);
return 0;
}