Pagini recente » Cod sursa (job #2202506) | Cod sursa (job #2756783) | Cod sursa (job #2017630) | Cod sursa (job #1034015) | Cod sursa (job #658976)
Cod sursa(job #658976)
#include <cstdio>
#define NMax 105
using namespace std;
int N, K, X[NMax], E[NMax], S[NMax];
inline bool Prime (int X)
{
for (int i=2; i*i<=X; ++i)
{
if (X%i==0)
{
return false;
}
}
return true;
}
void Read ()
{
freopen ("factoriale.in", "r", stdin);
scanf ("%d %d", &N, &K);
for (int i=1; i<=N; ++i)
{
scanf ("%d", &X[i]);
}
}
inline void Multiply (int A[], int B)
{
int i, T=0;
for (i=1; i<=A[0] or T>0; ++i, T/=10)
{
T+=(A[i]*B);
A[i]=T%10;
}
A[0]=i-1;
}
void Solve ()
{
for (int i=2; i<100; ++i)
{
if (Prime (i))
{
for (int j=1; j<=N; ++j)
{
int Powi=i;
while (Powi<=X[j])
{
E[i]+=(X[j]/Powi);
Powi*=i;
}
}
if (E[i]%K!=0)
{
E[i]=K-(E[i]%K);
}
else
{
E[i]=0;
}
}
}
S[0]=S[1]=1;
for (int i=2; i<100; ++i)
{
for (; E[i]>0; --E[i])
{
Multiply (S, i);
}
}
}
void Print ()
{
freopen ("factoriale.out", "w", stdout);
for (int i=S[0]; i>0; --i)
{
printf ("%d", S[i]);
}
printf ("\n");
}
int main()
{
Read ();
Solve ();
Print ();
return 0;
}