কম্পিউটার

C++ এ দুটি সংখ্যা দ্বারা বিভাজ্যতার সাথে মুনাফা যুক্ত হলে লাভকে সর্বোচ্চ করুন


আমাদের পাঁচটি পূর্ণসংখ্যা দেওয়া হয়েছে 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 বি (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 দ্বারা বিভাজ্যতা বেছে নিয়েছি। তাই লাভ Y দ্বারা X নয় কারণ Y বেশি। সুতরাং এটি 1 থেকে 4 ( Y=3 দ্বারা)

পর্যন্ত বৃদ্ধি পায়

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

  • আমাদের পূর্ণসংখ্যা N, A, B, X, Y.

    আছে
  • ফাংশন maximizeProfit(int n, int a, int b, int x, int y) লাভ গণনা করে এবং মান প্রদান করে। এটি সমস্ত ভেরিয়েবলকে প্যারামিটার হিসাবে নেয় এবং সর্বাধিক লাভ ফেরত দেয়।

  • পরিবর্তনশীল লাভে লাভের পরিমাণ থাকবে, প্রাথমিকভাবে 0।

  • 1 থেকে n থেকে শুরু করে, লুপ

    ব্যবহার করে i এর বিভাজ্যতা a এবং b দ্বারা পরীক্ষা করুন
  • i যদি a এবং b উভয় দ্বারা বিভাজ্য হয় তাহলে x বা y যেটি বেশি হয় তার দ্বারা মুনাফা বাড়ান।

  • অন্যথায় যদি আমি শুধুমাত্র একটি দ্বারা বিভাজ্য হয়, x

    দ্বারা লাভ বাড়ান
  • অন্যথায় আমি শুধুমাত্র 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. C++ এ একটি নতুন সংখ্যা তৈরি করতে দুটি সংখ্যার বিকল্প বিট

  2. দুইটির বেশি (বা অ্যারে) সংখ্যার GCD-এর জন্য C++ প্রোগ্রাম?

  3. দুইটির বেশি (বা অ্যারে) সংখ্যার GCD 0 এর জন্য C++ প্রোগ্রাম?

  4. দুই নম্বর অদলবদল করতে C++ প্রোগ্রাম