Pagini recente » Cod sursa (job #1303096) | Cod sursa (job #180536) | Cod sursa (job #1153257) | Cod sursa (job #2044203) | Cod sursa (job #374144)
Cod sursa(job #374144)
using namespace std;
#include <fstream>
#include <iostream>
int prime[105],putere[105],n,k,e[105],nrp;
typedef int NrMare[10000];
void desc(int j){
int d=1,p=0;
while(j%prime[d]==0)
p++,j/=prime[d];
putere[prime[d]] += p;
d=2;
while(j>1){
p=0;
while(j%prime[d]==0)
p++,j /= prime[d];
putere[prime[d]] += p;
d++;
if(prime[d]*prime[d]>j && j>1)
putere[j] +=1, j=1;
}
}
void Produs(NrMare a,int x){
int t=0,i,tmp;
for(i=1;i<=a[0];++i){
tmp=a[i]*x+t;
a[i]=tmp%10;
t=tmp/10;
}
while(t)
a[++a[0]]=t%10 , t/=10;
}
void Scrie(NrMare a, ostream& out){
for(int i=a[0];i;--i)
out<<a[i];
out<<endl;
}
int main(){
int i,j,x;
e[0]=e[1]=1;
for(i=2;i*i<=100;++i)
if(e[i]==0)
for(j=2;i*j<=100;++j)
e[i*j]=1;
for(i=1;i<=100;++i)
if(e[i]==0)
prime[++nrp]=i;
cout<<endl;
ifstream fin("factoriale.in");
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>x;
for(j=2;j<=x;j++)
desc(j);
}
for(i=1;i<=nrp;i++){
x=putere[prime[i]];
if(x%k==0)
j=0;
else
j=k*(x/k+1)-x;
putere[prime[i]]=j;
}
//for(i=1;i<=nrp;i++)
// cout<<"("<<prime[i]<<" "<<putere[prime[i]]<<") ";
//cout<<endl;
NrMare a;
a[0]=1;a[1]=1;
for(i=1;i<=nrp;++i){
x=putere[j=prime[i]];
for(k=1;k<=x;k++)
Produs(a,j);
}
ofstream fout("factoriale.out");
Scrie(a,fout);
return 0;
}