मान लीजिए कि हमारे पास एक संख्या 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 का आकार
-
अधिकतम :=-1
-
map1:=आकार की एक सरणी (n + 5) इसे 0 से भरें
-
मैं के लिए 0 से एस की सीमा में, करते हैं
-
j के लिए i से s की श्रेणी में, करें
-
अगर v[i] + v[j]
-
v1 के अंत में v[i] + v[j] डालें
-
map1[v[i] + v[j]]:=[v[i], v[j]]
-
my_map[v[i] + v[j]] :=1
-
-
-
-
s :=v1 का आकार
-
मैं के लिए 0 से एस की सीमा में, करते हैं
-
तत्व:=n - (v1[i])
-
अगर my_map में तत्व है, तो
-
a:=map1[v1[i], 0]
-
बी:=नक्शा1[v1[i], 1]
-
सी:=नक्शा1[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