两个WA,其他全RE
#include <bits/stdc++.h>
using namespace std;
int N, m1, m2;
int s;
int pm[45000], ps[45000], ery[10005];
void prime_sieve(int n){
int now = 2;
while(n > 1){
if(n % now == 0){
ps[now]++;
n /= now;
}
else now++;
}
}
signed main(){
cin >> N;
cin >> m1 >> m2;
int po_m = pow(m1, m2), po = po_m;
int now = 2;
while(po_m>1){
if(po_m % now == 0){
pm[now]++;
po_m /= now;
}
else now++;
}
int minn = 0x3f3f3f3f;
for(int i = 1; i <= N; i++){
cin >> s;
prime_sieve(s);
int jmx = -0x3f3f3f3f;
for(int j = 1; j <= max(s, po); j++){
if(pm[j] != 0 && ps[j] == 0){
ery[i] = 0x3f3f3f3f;
break;
}
else if(ps[j] < pm[j]){
int z = ceil(pm[j] / (ps[j]*1.0));
jmx = max(jmx, z);
}
else jmx = max(jmx, 1);
}
if(ery[i] != 0x3f3f3f3f) ery[i] = jmx;
for(int j = 1; j <= 45000; j++) ps[j] = 0;
}
for(int i = 1; i <= N; i++){
if(ery[i] != 0x3f3f3f3f){
minn = min(minn, ery[i]);
}
}
if(minn != 0x3f3f3f3f) cout << minn;
else cout << -1;
return 0;
}