56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
<<<<<<< HEAD
|
|
int main() {
|
|
|
|
=======
|
|
const int INF = 0x3f3f3f3f;
|
|
const int N = 1010;
|
|
struct Node {
|
|
int number;
|
|
int count;
|
|
} a[N];
|
|
int al;
|
|
int m1;
|
|
int m2;
|
|
int n;
|
|
int mi = INF;
|
|
int main() {
|
|
cin >> n >> m1 >> m2;
|
|
for (int i = 2; i <= m1; i++) {
|
|
if (m1 % i == 0) {
|
|
a[++al].number = i;
|
|
while (m1 % i == 0) {
|
|
a[++al].count++;
|
|
}
|
|
a[al].count *= m2;
|
|
}
|
|
}
|
|
while (n--) {
|
|
int s;
|
|
cin >> s;
|
|
bool flag = true;
|
|
for (int i = 1; i <= al; i++)
|
|
if (s % a[i].number != 0) {
|
|
flag = false;
|
|
break;
|
|
}
|
|
if (flag) {
|
|
int mx = 0;
|
|
for (int i = 1; i <= al; i++) {
|
|
int cnt = 0;
|
|
while (s % a[i].number == 0) {
|
|
s /= a[i].number;
|
|
cnt++;
|
|
}
|
|
int second = ceil(1.0 * a[i].count / cnt);
|
|
mx = max(mx, second);
|
|
}
|
|
mi = min(mi, mx);
|
|
}
|
|
}
|
|
if (mi == INF) printf("-1");
|
|
else printf("%d", mi);
|
|
>>>>>>> 485a3e402b5262a90312e541a18a7485bc87f84d
|
|
return 0;
|
|
} |