Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

लाभ को अधिकतम करें जब दो संख्याओं से विभाज्यता C++ में संबद्ध लाभ हो


हमें पांच पूर्णांक दिए गए हैं 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

  1. दो से अधिक (या सरणी) संख्याओं के GCD के लिए C++ प्रोग्राम?

    दो संख्याओं का सार्व भाजक वे संख्याएँ होती हैं जो उन दोनों की भाजक होती हैं। उदाहरण के लिए, 12 के भाजक 1, 2, 3, 4, 6, 12 हैं। 18 के भाजक 1, 2, 3, 6, 9, 18 हैं। इस प्रकार, 12 और 18 के उभयनिष्ठ भाजक 1, 2 हैं। , 3, 6। इनमें से सबसे बड़ा, शायद आश्चर्यजनक रूप से, 12 और 18 का कहा जाता है। दो पूर्णांकों a

  1. दो से अधिक (या सरणी) संख्याओं के जीसीडी 0 के लिए सी++ प्रोग्राम?

    यहाँ हम देखेंगे कि कैसे हम दो से अधिक संख्याओं की gcd प्राप्त कर सकते हैं। दो संख्याओं का gcd खोजना आसान है। जब हम दो से अधिक संख्याओं का gcd ज्ञात करना चाहते हैं, तो हमें gcd के साहचर्यता नियम का पालन करना होगा। उदाहरण के लिए, यदि हम {w, x, y, z} का gcd खोजना चाहते हैं, तो यह {gcd(w,x), y, z} होगा,

  1. C++ प्रोग्राम दो नंबर स्वैप करने के लिए

    दो नंबरों को स्वैप करने के लिए प्रोग्राम बनाने के दो तरीके हैं। एक में एक अस्थायी चर का उपयोग करना शामिल है और दूसरा तरीका तीसरे चर का उपयोग नहीं करता है। इन्हें विस्तार से इस प्रकार समझाया गया है - अस्थायी चर का उपयोग करके दो नंबरों को स्वैप करने का कार्यक्रम एक अस्थायी चर का उपयोग करके दो नंबरों