Pagini recente » Cod sursa (job #348940) | Cod sursa (job #1642392) | Cod sursa (job #1011569) | Cod sursa (job #2379814) | Cod sursa (job #504079)
Cod sursa(job #504079)
#include <fstream>
#include <vector>
using namespace std;
const char InFile[]="factoriale.in";
const char OutFile[]="factoriale.out";
const int MaxN=105;
ifstream fin(InFile);
ofstream fout(OutFile);
inline int legendre(int x,int p)
{
int d=p;
int t=x/d;
int rez=0;
while(t)
{
rez+=t;
d=d*p;
t=x/d;
}
return rez;
}
int n,k,x,v[MaxN];
char pciur[MaxN];
vector<int> nrp;
int nr[MaxN];
inline void ciur()
{
for(register int i=2;i<MaxN;++i)
{
if(pciur[i]==0)
{
nrp.push_back(i);
for(register int j=i<<1;j<MaxN;j+=i)
{
pciur[j]=1;
}
}
}
}
inline void mul(int a[],int x)
{
int t=0,i=1;
for(;i<=a[0] || t;++i,t/=10)
{
a[i]=(t+=a[i]*x)%10;
}
a[0]=i-1;
}
int main()
{
ciur();
fin>>n>>k;
for(register int i=1;i<=n;++i)
{
fin>>x;
for(register int j=0;j<(int)nrp.size() && nrp[j]<=x;++j)
{
v[j]+=legendre(x,nrp[j]);
}
}
fin.close();
nr[0]=1;
nr[1]=1;
for(register int i=0;i<MaxN;++i)
{
if(v[i]%k!=0)
{
v[i]=k-v[i]%k;
for(register int j=0;j<v[i];++j)
{
mul(nr,nrp[i]);
}
}
}
for(register int i=nr[0];i>0;--i)
{
fout<<nr[i];
}
fout.close();
return 0;
}