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
#include <cstdio>

short int k;
unsigned long long int N;

unsigned long long int Iteracja(unsigned short int tablica[],unsigned long long int maksimum){

    unsigned long long int maksimum_iteracji=maksimum,a;
    for(int i=0;i<k;++i){
        if(tablica[i]*maksimum<N+1){
            a=Iteracja(tablica,maksimum*tablica[i]);
            if (maksimum_iteracji<a)
                maksimum_iteracji=a;
        }

    }
    return maksimum_iteracji;
}

using namespace std;

int main()
{

    //scanf("%uhd %ulld",&k,&N);
    scanf("%uhd",&k);
    scanf("%ulld",&N);
    unsigned short int tab[k];
    for(unsigned short int i=0;i<k;++i){
        scanf("%uhd",&tab[i]);
    }
    unsigned long long int maksimum;
    maksimum=Iteracja(tab,1);
    printf("%lld",maksimum);


    return 0;
}