हमें पांच पूर्णांक दिए गए हैं N, A, B, X और वाई . लक्ष्य यह जांच कर लाभ को अधिकतम करना है कि [ 1 से N ] की सीमा में संख्याओं के बीच, यदि
-
कोई संख्या A से विभाज्य है, तो लाभ X . से बढ़ जाता है ।
-
कोई संख्या B से विभाज्य है तो लाभ Y . से बढ़ जाता है ।
एक सीमा में किसी विशेष संख्या के लिए केवल एक बार लाभ जोड़ा जा सकता है।
आइए उदाहरणों से समझते हैं।
इनपुट - एन=4, ए=2, बी=3, एक्स=2, वाई=3
आउटपुट − अधिकतम लाभ है − 7
स्पष्टीकरण -
2,4 A ( 2 ) से विभाज्य हैं। लाभ 0 से 2 तक बढ़ता है, फिर 2 से 4 (X=2 से)
3, B (3) से विभाज्य है। लाभ 4 से बढ़कर 7 हो जाता है। (Y=3 से)
इनपुट -एन=5, ए=2, बी=4, एक्स=1, वाई=3
आउटपुट − अधिकतम लाभ है:4
स्पष्टीकरण -
2,4 A ( 2 ) से विभाज्य हैं।
4 भी B ( 4 ) से विभाज्य है।
2 के लिए लाभ 0 से बढ़कर 1 (X द्वारा) हो जाता है। 4 के लिए हमने B से विभाज्यता को चुना। इसलिए लाभ Y से बढ़ता है, X से नहीं क्योंकि Y अधिक है। तो यह 1 से 4 तक (Y=3 से) बढ़ जाता है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हमारे पास एन, ए, बी, एक्स, वाई पूर्णांक हैं।
-
फ़ंक्शन मैक्सिमाइज़प्रॉफ़िट (इंट एन, इंट ए, इंट बी, इंट एक्स, इंट वाई) लाभ की गणना करता है और मान लौटाता है। यह सभी चरों को पैरामीटर के रूप में लेता है और अधिकतम लाभ लौटाता है।
-
परिवर्तनीय लाभ में लाभ की राशि होगी, प्रारंभ में 0.
-
1 से n तक, लूप के लिए उपयोग करके i की a और b से विभाज्यता की जांच करें
-
यदि i, a और b दोनों से विभाज्य है तो लाभ को x या y से जो भी अधिक हो, बढ़ा दें।
-
अन्यथा यदि मैं केवल एक से विभाज्य हूं, तो लाभ को x से बढ़ाएं
-
अन्यथा यदि i केवल b से विभाज्य है, तो y से लाभ बढ़ाएं
-
परिणाम के रूप में लाभ में मौजूद अंत में वापसी मूल्य।
उदाहरण
#include <bits/stdc++.h> using namespace std; // Function to return the maximum profit int maximizeProfit(int n, int a, int b, int x, int y){ int profit=0; for(int i=1;i<=n;i++){ if(i%a==0 && i%b==0){ int maxx=x>=y?x:y; profit+=maxx; } else if(i%a==0){ profit+=x; } else if(i%b==0){ profit+=y; } } return profit; } int main(){ int N = 6, A = 2, B =4, X = 6, Y = 3; cout <<"Maximized profit is: "<<maximizeProfit(N,A,B,X,Y); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Maximized profit is: 2