हमें 5 पूर्णांक चर संख्या, P1, P2, लाभ_P1, लाभ_P2 दिए गए हैं और कार्य लाभ को अधिकतम करना है और सभी प्राकृतिक संख्याओं से [1, संख्या] की सीमा में है। यहाँ दृष्टिकोण यह है कि यदि कोई धनात्मक संख्या P1 से विभाज्य है तो लाभ लाभ_P1 से बढ़ता है और इसी प्रकार यदि श्रेणी में संख्या P2 से विभाज्य है तो लाभ_P2 का लाभ मार्जिन बढ़ जाता है। साथ ही, एक धनात्मक पूर्णांक से लाभ को अधिकतम एक बार जोड़ा जा सकता है।
उदाहरण के साथ समझते हैं:-
इनपुट - पूर्णांक संख्या =4, पी1 =6, पी2 =2, लाभ_पी1 =8, लाभ_पी2 =2;
आउटपुट - सभी व्यक्तियों के कुल लाभ को अधिकतम करें X 4
स्पष्टीकरण −यहां हमारे पास 1 से 4 तक की संख्या है([1,Num(4)])
श्रृंखला में कोई भी संख्या P1 से विभाज्य नहीं है
1 और 2, P2 से विभाज्य है
2*2=4 . का लाभ पाने के लिए 1 और 2, P2 से विभाज्य है
इनपुट − संख्या =3, P1 =1, P2 =2, लाभ_P1 =3, लाभ_P2 =4
आउटपुट - सभी व्यक्तियों के कुल लाभ को अधिकतम करें X 10
स्पष्टीकरण − 1, 2 और 3 A से विभाज्य हैं।
2 दी गई श्रेणी में एकमात्र संख्या है जो B से विभाज्य है।
2, A और B दोनों से विभाज्य है।
2 * 3 =6 का लाभ प्राप्त करने के लिए 1 और 3 को A से विभाजित किया जा सकता है
1 * 4 =4 का लाभ प्राप्त करने के लिए 2 को B से विभाजित किया जा सकता है
2 दोनों से विभाज्य है लेकिन लाभ को अधिकतम करने के लिए इसे A के बजाय B से विभाजित किया जाता है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है -
-
हमें 6 पूर्णांक चर के साथ दिया गया है जिसमें सकारात्मक संख्या श्रेणी (संख्या) शामिल है, पी 1 जो पहले व्यक्ति को दर्शाता है, पी 2 दूसरे व्यक्ति को दर्शाता है, लाभ_पी 1 जो व्यक्ति 1 के लाभ जैसा दिखता है (यानी यदि दी गई संख्या सीमा में संख्या है P1 से विभाज्य है लाभ_P1 बढ़ जाता है), और इसी तरह लाभ_P2।
-
मुख्य फ़ंक्शन के अंदर एक विधि को (लाभ अधिकतमकरण) कहा जाता है जो सभी गणनाओं के लिए उपयोगिता विधि है।
-
फ़ंक्शन के अंदर यह देखा जा सकता है कि प्रत्येक संख्या जो P1 और P2 दोनों के साथ विभाज्य है, यदि संख्या P1 या P2 में से किसी एक के LCM का गुणज है। साथ ही इसे उस संख्या से विभाजित किया जाना चाहिए जो अधिक लाभ देती है।
-
तो यहां इसकी गणना लाभकारी_P1 * (संख्या / P1) + लाभ_P2 * (संख्या / P2) - मिनट (लाभ_P1, लाभ_P2) * (संख्या / lcm(P1, P2)) द्वारा की जाती है ।
-
दिए गए नंबरों के एलसीएम की गणना करने के लिए एक विधि कैलकुलेट जीसीडी () पेश की गई है।
-
अंतिम आउटपुट मुख्य विधि में कैप्चर किया जाता है और उपयोगकर्ता को आउटपुट के रूप में प्रदर्शित किया जाता है।
उदाहरण
public class testClass{ static int CalculateGcd(int n1, int n2){ if (n2 == 0) return n1; return CalculateGcd(n2, n1 % n2); } static int profitMaximisation(int n, int a, int b, int x, int y){ int result = x * (n / a); result += y * (n / b); result -= Math.min(x, y) * (n / ((a * b) / CalculateGcd(a, b))); return result; } public static void main(String[] args){ int num = 6, P1 = 6, P2 = 2, profit_P1 = 8, profit_P2 = 2; System.out.println("Maximize the total profit of all the persons X "+profitMaximisation(num, P1, P2, profit_P1, profit_P2)); } }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Maximize the total profit of all the persons X 12