Pagini recente » Cod sursa (job #986805) | Cod sursa (job #1065597) | Cod sursa (job #2827383) | Cod sursa (job #994286) | Cod sursa (job #2873182)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
bool ciur[105];int prime[105];
int f[105];int rez[10005],pozrez;
void inmultire(int nr){
long long t=0;
for(int i=1;i<pozrez;i++){
t+=rez[i]*nr;rez[i]=t%10;t/=10;
}
while(t>0){
rez[pozrez]=t%10;t/=10;pozrez++;
}
}
int main()
{
int n,k,a,put;fin>>n>>k;
ciur[0]=ciur[1]=1;
for(int i=2;i*i<=100;i++){
if(ciur[i]==0){
for(int j=i*i;j<=100;j+=i){
ciur[j]=1;
}
}
}int poz=1;
for(int i=1;i<=100;i++){
if(ciur[i]==0){prime[poz]=i;poz++;}
}
for(int i=1;i<=n;i++){
fin>>a;
for(int j=1;j<poz;j++){
put=prime[j];
while(a>=put){
f[j]+=a/put;put*=prime[j];
}
}
}rez[1]=1;pozrez=2;
for(int i=1;i<poz;i++){
f[i]%=k;
if(f[i]!=0){
f[i]=k-f[i];
while(f[i]-2>=0){
inmultire(prime[i]*prime[i]);f[i]-=2;
}
if(f[i]==1){
inmultire(prime[i]);
}
}
}
for(int i=pozrez-1;i>=1;i--){fout<<rez[i];}fout<<'\n';
return 0;
}