Đầu vào:
Một dãy số nguyên không rỗng lớn hơn 0, độ dài của nó lớn hơn 1.
Đầu ra:
Sản phẩm lớn nhất của tất cả các yếu tố của chuỗi dài nhất giữa các yếu tố tối thiểu và tối đa của chuỗi bao gồm cả chính chúng.
Chú thích:
Bởi vì các phần tử tối thiểu và tối đa có thể được lặp lại, sau đó đến một câu trả lời xác định cần thiết để tìm ra phần tử dài nhất có thể, ở một đầu của nó là phần tử tối thiểu và ở phần cuối tối đa khác của chuỗi. Nếu có nhiều chuỗi con dài nhất thì hãy chọn chuỗi con với sản phẩm lớn nhất.
Ví dụ:
Ví dụ thứ nhất:
Đầu vào: [5, 7, 3, 2, 1, 2, 2, 7, 5]
Đầu ra: 42
Giải thích:
min == 1
, max == 7
. Có 2 chuỗi con có thể có tối thiểu và tối đa ở cuối: [1, 2, 2, 7]
và [7, 3, 2, 1]
. Chiều dài của chúng là bằng nhau, vì vậy so sánh các sản phẩm: 7*3*2*1 == 42
và 1*2*2*7 == 28
. Bởi vì 42 >= 28
, trả lời : 42
.
Ví dụ thứ 2:
Đầu vào: [1, 2, 2, 2, 4, 3, 3, 1]
Đầu ra: 32
Giải thích:
min == 1
, max == 4
. 2 phần sau: [1, 2, 2, 2, 4]
và [4, 3, 3, 1]
. Chiều dài [1, 2, 2, 2, 4]
lớn hơn chiều dài [4, 3, 3, 1]
. sản phẩm: 1*2*2*2*4 == 32
=> câu trả lời là 32
.
Ví dụ 3d:
Đầu vào: [1, 2, 3, 4, 3, 3, 1]
Đầu ra: 36
Giải thích ngắn:
min == 1
, max == 4
. 2 phần sau: [1, 2, 3, 4]
và [4, 3, 3, 1]
. 1*2*3*4 == 24
, 4*3*3*1 == 36
, 36 >= 24
=> Câu trả lời là 36
.
Ví dụ thứ 4:
Đầu vào: [2, 2, 2]
Đầu ra: 8
Giải thích:
min == 2
, max == 2
. 2 phần sau khác nhau: [2, 2]
và [2, 2, 2]
. Chiều dài [2, 2, 2]
lớn hơn chiều dài [2, 2]
. sản phẩm: 2*2*2 == 8
=> câu trả lời là 8
.
Thêm ví dụ (ngẫu nhiên) :
>>>[7, 2, 3, 6, 8, 6, 2, 5, 4, 3]
288
>>>[3, 3, 8, 9, 1, 7, 7, 2, 2, 4]
9
>>>[3, 2, 6, 5, 4, 1, 8, 8, 7, 9]
4032
>>>[7, 4, 2, 8, 8, 3, 9, 9, 5, 6]
31104
Kiểm tra giải pháp của bạn:
Dưới đây là Python 3 lambda (788 byte) , đáp ứng yêu cầu của nhiệm vụ:
lambda O: __import__('functools').reduce(__import__('operator').mul,O[[[slice(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1),slice(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1)][__import__('functools').reduce(__import__('operator').mul,O[O.index(min(O)):(len(O)-1-O[::-1].index(max(O)))+1],1)>=__import__('functools').reduce(__import__('operator').mul,O[O.index(max(O)):len(O)-1-O[::-1].index(min(O))+1],1)],slice(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1),slice(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)][(len(range(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1))>len(range(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)))-(len(range(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1))<len(range(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)))]],1)
Người chiến thắng:
Giải pháp ngắn nhất sẽ giành chiến thắng. Tất cả các ngôn ngữ lập trình được chấp nhận.
Tái bút: Tôi sẽ rất vui khi được giải thích về các giải pháp của bạn