Pagini recente » Cod sursa (job #2565923) | Cod sursa (job #2295756) | Cod sursa (job #318109) | Cod sursa (job #945194) | Cod sursa (job #2910900)
#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;
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 sol[1005];
void afisare(){
for(int i=sol[0];i>=1;i--){
g<<sol[i];
}
}
void afisaretest(){
for(int i=sol[0];i>=1;i--){
cout<<sol[i];
}
cout<<'\n';
}
void inmultire(int x){
int prod,t=0,i;
for(i=1;i<=sol[0] || t!=0;i++){
prod = x * sol[i] + t;
sol[i] = prod%10;
t = prod/10;
}
sol[0] = i-1;
//afisaretest();
}
int main(){
make_ciur();
f>>n>>k;
for(int i=1;i<=n;i++){
f>>x;
add_div_fact(x);
/*cout<<"test"<<'\n';
for(int j=1;j<=ciurk;j++){
cout<<u[j]<<" ";
}
cout<<'\n';*/
}
for(int i=1;i<=ciurk;i++){
if(u[i]%k!=0){
bonusu[i] = k - u[i]%k;
}
}
sol[0] = 1;
sol[1] = 1;
for(int i=1;i<=ciurk;i++){
for(int j=1;j<=bonusu[i];j++){
inmultire(prime[i]);
}
}
afisare();
f.close();
g.close();
return 0;
}