// Beniamin Gajecki
#include <iostream>
#include <cmath>
#include <vector>
bool getFirstFactors(unsigned _a, std::vector<unsigned short> _b)
{
if(_a > 1)
{
for(int i = _b.size() - 1; i>=0; --i)
{
if(_a%_b[i]==0)
{
_a /= _b[i];
return getFirstFactors(_a, _b);
}
}
return false;
}
else
return true;
}
int main()
{
unsigned k, n;
std::cin>>k>>n;
if((k >= 1) && ((1 <= n) &&(n <= pow(10, 18))))
{
std::vector<unsigned short> ilo;
unsigned short x;
for(unsigned i = 0; i<k; ++i)
{
std::cin>>x;
if((2 <= x) && (x <= 100))
ilo.push_back(x);
else
return 1;
}
for(unsigned i = n; i>1; --i)
{
if(getFirstFactors(i, ilo))
{
std::cout<<i;
return 0;
}
}
return 1;
}
return 1;
}
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 51 | // Beniamin Gajecki #include <iostream> #include <cmath> #include <vector> bool getFirstFactors(unsigned _a, std::vector<unsigned short> _b) { if(_a > 1) { for(int i = _b.size() - 1; i>=0; --i) { if(_a%_b[i]==0) { _a /= _b[i]; return getFirstFactors(_a, _b); } } return false; } else return true; } int main() { unsigned k, n; std::cin>>k>>n; if((k >= 1) && ((1 <= n) &&(n <= pow(10, 18)))) { std::vector<unsigned short> ilo; unsigned short x; for(unsigned i = 0; i<k; ++i) { std::cin>>x; if((2 <= x) && (x <= 100)) ilo.push_back(x); else return 1; } for(unsigned i = n; i>1; --i) { if(getFirstFactors(i, ilo)) { std::cout<<i; return 0; } } return 1; } return 1; } |
English