Pagini recente » Cod sursa (job #404054) | Cod sursa (job #1945113) | Cod sursa (job #3142005) | Cod sursa (job #805810) | Cod sursa (job #2519904)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("factoriale.in");
ofstream fout ("factoriale.out");
int p[150],prime[150],sol[100010],x[150],e[150];
int n,k,i,j,nr;
int exp(int x, int p) {
int produs=p;
int sol=0;
while(produs<=x){
sol+=x/produs;
produs*=p;
}
return sol;
}
void inmultire_nr_mari(int a[], int b){
int t=0;
for(int i=1;i<=a[0];i++) {
a[i]=a[i]*b+t;
t=a[i]/10;
a[i]%=10;
}
while (t) {
a[++a[0]]=t%10;
t/=10;
}
}
void eratostene(){
nr=1;
prime[1]=2;
for(int i=3;i<=120;i+=2){
if(!p[i]){
prime[++nr]=i;
for(int j=i+i+i; j<=120;j+= i<<1)
p[j]=1;
}
}
}
int main(){
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>x[i];
eratostene();
for (i=1;i<=n;i++)
for (j=1;j<=nr;j++)
e[j]+=exp(x[i],prime[j]);
sol[0]=1;
sol[1]=1;
i=1;
while(i<=nr && e[i]){
while (e[i]%k != 0) {
inmultire_nr_mari(sol, prime[i]);
e[i]++;
}
i++;
}
for(i=sol[0];i>=1;i--)
fout<<sol[i];
return 0;
}