#include 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; }