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