#include <iostream> #include <vector> #include <bitset> const std::size_t MAX = 60000000; int main() { std::ios_base::sync_with_stdio(false); std::size_t k, n; std::cin >> k >> n; if (n >= MAX) { std::cout << "za dużo :("; return 1; } std::vector<unsigned> p; p.reserve(k); for (std::size_t i = 0; i < k; ++i) { unsigned p_i; std::cin >> p_i; p.push_back(p_i); } std::bitset<MAX> is_ok; is_ok.set(1); for (auto p_i: p) { for (size_t i = 1; i <= n / p_i; ++i) { if (is_ok[i]) { is_ok.set(p_i * i); } } } for (size_t i = n; ; --i) { if (is_ok[i]) { std::cout << i << "\n"; return 0; } } }
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 | #include <iostream> #include <vector> #include <bitset> const std::size_t MAX = 60000000; int main() { std::ios_base::sync_with_stdio(false); std::size_t k, n; std::cin >> k >> n; if (n >= MAX) { std::cout << "za dużo :("; return 1; } std::vector<unsigned> p; p.reserve(k); for (std::size_t i = 0; i < k; ++i) { unsigned p_i; std::cin >> p_i; p.push_back(p_i); } std::bitset<MAX> is_ok; is_ok.set(1); for (auto p_i: p) { for (size_t i = 1; i <= n / p_i; ++i) { if (is_ok[i]) { is_ok.set(p_i * i); } } } for (size_t i = n; ; --i) { if (is_ok[i]) { std::cout << i << "\n"; return 0; } } } |