#include <algorithm> #include <cstdio> #define ILO_ENABLED using namespace std; static const long long N = 1E18; static const int K = 25; static int p[K + 1]; long long product(const int* p, const long long n) { long long m = 1; while(*p) { const long long r = n / *p; m = max(m, *p*(r > 1 ? product(p, r) : r)); p++; } return m; } #ifdef ILO_ENABLED int main() { int k; long long n; while(scanf("%d%lld", &k, &n) > 0) { for(int i = 0; i < k; i++) { scanf("%d", p + i); } sort(p, p + k); p[k] = 0; printf("%lld\n", product(p, n)); } return 0; } #endif
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 | #include <algorithm> #include <cstdio> #define ILO_ENABLED using namespace std; static const long long N = 1E18; static const int K = 25; static int p[K + 1]; long long product(const int* p, const long long n) { long long m = 1; while(*p) { const long long r = n / *p; m = max(m, *p*(r > 1 ? product(p, r) : r)); p++; } return m; } #ifdef ILO_ENABLED int main() { int k; long long n; while(scanf("%d%lld", &k, &n) > 0) { for(int i = 0; i < k; i++) { scanf("%d", p + i); } sort(p, p + k); p[k] = 0; printf("%lld\n", product(p, n)); } return 0; } #endif |