Pagini recente » Cod sursa (job #189018) | Cod sursa (job #2467819) | Cod sursa (job #326430) | Cod sursa (job #2819435) | Cod sursa (job #461420)
Cod sursa(job #461420)
#include <cstdio>
const char FIN[] = "factoriale.in", FOU[] = "factoriale.out";
const int MAX_N = 105, MAX_C = 100005;
int N, K;
int put[MAX_N], V[MAX_N];
int MIN[MAX_C] = { 1, 1 };
void mul (int A[], int B) // A[] <- A[] * B
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += ( i <= A[0] ? A[i] : A[i] = 0 ) * B) % 10;
A[0] = i - 1;
}
void write ( int A[] )
{
for ( int i = A[0]; i; --i ) printf("%d", A[i]);
}
int main ()
{
freopen(FIN, "r", stdin);
freopen(FOU, "w", stdout);
scanf("%d %d", &N, &K);
for (int i = 1; i <= N; ++i)
scanf("%d", &V[i]);
for (int i = 1; i <= N; ++i)
for (int j = 2; j <= V[i]; ++j)
{
int aux = j;
for (int k = 2; aux > 1 && k <= aux; ++k)
for ( ; aux % k == 0; ++put[k], aux /= k) ;
}
MIN[0] = MIN[1] = 1;
for (int i = 2; i <= 100; ++i)
for ( ; put[i] % K ; ++put[i], mul ( MIN, i ) ) ;
write ( MIN );
return 0;
}