#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"; } |
English