สมมติว่าเรามีตัวเลข N; เราต้องหาตัวประกอบของ N และส่งกลับเฉพาะผลคูณของปัจจัยสี่ตัวของ N เท่านั้น −
-
ผลรวมของปัจจัยทั้งสี่มีค่าเท่ากับ N.
-
ผลคูณของปัจจัยทั้งสี่มีค่าสูงสุด
ปัจจัยทั้งสี่สามารถมีค่าเท่ากันเพื่อเพิ่มผลผลิตให้สูงสุด
ดังนั้นหากอินพุตเป็น N =60 เอาต์พุตจะเป็น 50625 เนื่องจากปัจจัยทั้งหมดคือ → 1 2 3 4 5 6 10 12 15 20 30 60 และผลิตภัณฑ์ของมันคือ 50625 เนื่องจากเรา 15 ถูกเลือกสี่ครั้ง ทำให้สินค้ามีขนาดใหญ่ที่สุด
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
my_map :=แผนที่ใหม่
-
v :=รายการใหม่ v1 :=รายการใหม่
-
สำหรับฉันอยู่ในช่วง 1 ถึงเพดานของรากที่สองของ (n) + 1 ทำ
-
ถ้า n mod i เหมือนกับ 0 แล้ว
-
ใส่ i ต่อท้าย v
-
ถ้าฉันไม่เหมือนส่วนจำนวนเต็มของ (n / i) และฉันไม่เหมือน 1 แล้ว
-
แทรกส่วนจำนวนเต็มของ (n / i) ที่ส่วนท้ายของ v
-
-
-
-
s :=ขนาดของวี
-
สูงสุด :=-1
-
map1 :=อาร์เรย์ขนาด (n + 5) เติมด้วย 0
-
สำหรับฉันอยู่ในช่วง 0 ถึง s ทำ
-
สำหรับ j ในช่วง i ถึง s ทำ
-
ถ้า v[i] + v[j]
-
ใส่ v[i] + v[j] ต่อท้าย v1
-
map1[v[i] + v[j]] :=[v[i], v[j]]
-
my_map[v[i] + v[j]] :=1
-
-
-
-
s :=ขนาดของ v1
-
สำหรับฉันอยู่ในช่วง 0 ถึง s ทำ
-
องค์ประกอบ :=n - (v1[i])
-
ถ้าองค์ประกอบใน my_map แล้ว
-
a :=map1[v1[i], 0]
-
b :=map1[v1[i], 1]
-
c :=map1[n - v1[i], 0]
-
d :=map1[n - v1[i], 1]
-
สูงสุด :=สูงสุดของ a * b * c * d สูงสุด
-
-
-
ถ้าค่าสูงสุดเท่ากับ -1 แล้ว
-
แสดง "เป็นไปไม่ได้"
-
-
มิฉะนั้น
-
แสดงผลสูงสุด
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from math import sqrt, ceil, floor
def get_product(n):
my_map = dict()
v = []
v1 = []
for i in range(1,ceil(sqrt(n)) + 1):
if (n % i == 0):
v.append(i)
if (i != (n // i) and i != 1):
v.append(n // i)
s = len(v)
maximum = -1
map1 = [0]*(n + 5)
for i in range(s):
for j in range(i, s):
if (v[i] + v[j] < n):
v1.append(v[i] + v[j])
map1[v[i] + v[j]] =[v[i], v[j]]
my_map[v[i] + v[j]] = 1
s = len(v1)
for i in range(s):
element = n - (v1[i])
if (element in my_map):
a = map1[v1[i]][0]
b = map1[v1[i]][1]
c = map1[n - v1[i]][0]
d = map1[n - v1[i]][1]
maximum = max(a * b * c * d, maximum)
if (maximum == -1):
print("Not Possible")
else :
print("Maximum product", maximum)
n = 60
get_product(n) อินพุต
60
ผลลัพธ์
Maximum product 50625