Pagini recente » Cod sursa (job #906961) | Cod sursa (job #488685) | Cod sursa (job #1525242) | Cod sursa (job #3126146) | Cod sursa (job #2523288)
#include <fstream>
#define dim 110
using namespace std;
int a[dim];
int f[dim];
int e[dim];
int pr[dim];
int sol[dim];
int i,j,n,u,k;
void calcularePrime (int pr[],int nr) {
for (i=2;i<=nr;i++) {
if (f[i]==0) {
j=i+i;
while (j<=nr) {
f[j]=1;
j+=i;
}
pr[++u]=i;
}
}
}
void produs (int a[],int p) {
int t=0;
for(int i=1;i<=a[0];i++){
a[i]=a[i]*p+t;
t=a[i]/10;
a[i]%=10;
}
for(;t;t/=10)
a[++a[0]]=t%10;
}
int exponent (int x,int p) {
int prod=p;
int s=0;
while (prod<=x) {
s+=x/prod;
prod*=p;
}
return s;
}
int main() {
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
fin>>n>>k;
for (i=1;i<=n;i++) {
fin>>a[i];
}
calcularePrime(pr,110);
for (i=1;i<=n;i++) {
for (j=1;j<=u;j++) {
e[j]+=exponent(a[i],pr[j]);
}
}
sol[0]=1;
sol[1]=1;
for (i=1;i<=u;i++) {
if (e[i]==0) break;
while (e[i]%k!=0) {
produs(sol,pr[i]);
e[i]++;
}
}
for (i=sol[0];i>=1;i--) {
fout<<sol[i];
}
/* for (i=1;i<=u;i++) {
fout<<pr[i]<<" ";
} */
return 0;
}