मान लीजिए हमारे पास एक संख्या 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 := एक नई सूची
i के लिए 1 से (n के वर्गमूल की सीलिंग) + 1 की सीमा में, करें
यदि n mod i, 0 के समान है, तो
v के अंत में i डालें
यदि i, (n / i) के पूर्णांक भाग के समान नहीं है और i, 1 के समान नहीं है, तो
v के अंत में (n / i) का पूर्णांक भाग डालें
s := v का आकार
maximum := -1
map1 := (n + 5) आकार की एक सरणी इसे 0 से भरें
i के लिए 0 से s की सीमा में, करें
j के लिए i से s की सीमा में, करें
यदि v[i] + v[j] < n, तो
v1 के अंत में v[i] + v[j] डालें
map1[v[i] + v[j]] := [v[i], v[j]]
my_map[v[i] + v[j]] := 1
s := v1 का आकार
i के लिए 0 से s की सीमा में, करें
element := n - (v1[i])
यदि element, 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 := a * b * c * d, maximum का अधिकतम
यदि maximum, -1 के समान है, तो
"Not Possible" प्रदर्शित करें
अन्यथा,
maximum प्रदर्शित करें
उदाहरण
बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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