Pagini recente » Cod sursa (job #3147937) | Cod sursa (job #318152) | Cod sursa (job #311594) | Cod sursa (job #3174286) | Cod sursa (job #2910899)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
//ifstream f("in.in");
//ofstream g("out.out");
ifstream f("factoriale.in");
ofstream g("factoriale.out");
int n,k,x,sol=1;
int prime[105],ciurk=0;
int u[105],bonusu[105];
bool ciur[105];
void make_ciur(){
for(int i=2;i<=100;i++){
if(ciur[i]==0){
for(int j=2;i*j<=100;j++){
ciur[i*j] = 1;
}
}
}
for(int i=2;i<=100;i++){
if(ciur[i]==0){
ciurk++;
prime[ciurk] = i;
}
}
}
void add_div_fact(int x){
for(int i=1;prime[i] <= x && i<= ciurk;i++){
int d = prime[i];
while(x>=d){
u[i]+=x/d;
d *= prime[i];
}
}
}
int main(){
make_ciur();
f>>n>>k;
for(int i=1;i<=n;i++){
f>>x;
add_div_fact(x);
/*for(int j=1;j<=10;j++){
cout<<u[j]<<" ";
}
cout<<'\n';*/
}
for(int i=1;i<=ciurk;i++){
if(u[i]%k!=0){
bonusu[i] = k - u[i]%k;
}
}
for(int i=1;i<=ciurk;i++){
for(int j=1;j<=bonusu[i];j++){
sol *= prime[i];
}
}
g<<sol;
f.close();
g.close();
return 0;
}