Pagini recente » Cod sursa (job #2252307) | Cod sursa (job #2023509) | Cod sursa (job #1501880) | Monitorul de evaluare | Cod sursa (job #504077)
Cod sursa(job #504077)
# include <fstream>
# include <iostream>
# include <algorithm>
using namespace std;
int n, k, v[103], p[103], e[103], ex[103];
long long sol[100000];
void read ()
{
ifstream fin ("factoriale.in");
fin>>n>>k;
for(int i=1;i<=n;++i)
fin>>v[i];
sort(v+1,v+n+1);
}
void prime ()
{
p[1]=2;
p[0]=1;
int pp;
for(int i=3;i<=v[n];++i)
{
pp=1;
for(int j=1;j<=p[0] && pp;++j)
if(i%p[j]==0)
pp=0;
if (pp)
p[++p[0]]=i;
}
}
void inm (int n)
{
int q, t=0;
for(int i=1;i<=sol[0];++i)
{
q=n*sol[i]+t;
sol[i]=q%10;
t=q/10;
}
while(t)
{
sol[++sol[0]]=t%10;
t/=10;
}
}
void solve ()
{
int poz=1, nr;
for(int i=2;i<=v[n];++i)
{
nr=i;
for(int j=1;j<=p[0] && nr>1;++j)
while (nr%p[j]==0)
{
++e[j];
nr/=p[j];
}
while (v[poz]==i)
{
for(int j=1;j<=p[0];++j)
ex[j]+=e[j];
++poz;
}
}
sol[0]=sol[1]=1;
for(int i=1;i<=p[0];++i)
{
cout<<p[i]<<"^"<<ex[i]<<endl;
if (ex[i]%k)
for(int j=1;j<=k-ex[i]%k;++j)
inm(p[i]);
}
}
int main ()
{
read ();
prime ();
solve ();
ofstream fout ("factoriale.out");
for(int i=sol[0];i;--i)
fout<<sol[i];
return 0;
}