#include <iostream> #include <set> #include <algorithm> using namespace std; using ll = long long; ll res = 1; const ll MAX = 1e18; set<ll> S; short p[30]; bool av[30]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll k, N; cin >> k >> N; for (int i = 0; i < k; i++) cin >> p[i]; sort(p, p+k); S.insert(1); bool ok = 1; while (ok) { if (S.size() > 499000) break; ok = 0; int sz = S.size(); for (int i = 0; i < k; i++) { if (av[i]) break; if (S.size() > 499000) break; bool ok1 = 1; for (ll j : S) { if (S.size() > 499000) break; long long x = j; if (x*p[i] <= N && x*p[i] <= MAX) S.insert(j*p[i]), ok1 = 0; } if (ok1) { av[i] = 1; break; } } if (S.size() > sz) ok = 1; } auto res = S.end(); res--; cout << *res << "\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> #include <set> #include <algorithm> using namespace std; using ll = long long; ll res = 1; const ll MAX = 1e18; set<ll> S; short p[30]; bool av[30]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll k, N; cin >> k >> N; for (int i = 0; i < k; i++) cin >> p[i]; sort(p, p+k); S.insert(1); bool ok = 1; while (ok) { if (S.size() > 499000) break; ok = 0; int sz = S.size(); for (int i = 0; i < k; i++) { if (av[i]) break; if (S.size() > 499000) break; bool ok1 = 1; for (ll j : S) { if (S.size() > 499000) break; long long x = j; if (x*p[i] <= N && x*p[i] <= MAX) S.insert(j*p[i]), ok1 = 0; } if (ok1) { av[i] = 1; break; } } if (S.size() > sz) ok = 1; } auto res = S.end(); res--; cout << *res << "\n"; } |