Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เพิ่มผลกำไรสูงสุดเมื่อการหารด้วยสองตัวเลขมีกำไรที่เกี่ยวข้องใน C++


เราได้รับจำนวนเต็มห้าจำนวน N, A, B, X และ ใช่ . เป้าหมายคือการเพิ่มผลกำไรสูงสุดโดยตรวจสอบว่าระหว่างตัวเลขในช่วง [ 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 ดังนั้น กำไรจะเพิ่มขึ้นโดย Y ไม่ใช่ X เนื่องจาก Y มากกว่า ดังนั้นมันจึงเพิ่มขึ้นจาก 1 เป็น 4 ( โดย Y=3 )

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เรามีจำนวนเต็ม N, A, B, X, Y.

  • ฟังก์ชั่น maximaProfit(int n, int a, int b, int x, int y) คำนวณกำไรและส่งกลับค่า ใช้ตัวแปรทั้งหมดเป็นพารามิเตอร์และส่งกลับกำไรสูงสุด

  • กำไรผันแปรจะมีจำนวนกำไร เริ่มต้น 0

  • เริ่มจาก 1 ถึง n ตรวจสอบการหารของ i ด้วย a และ b โดยใช้ for loop

  • หาก i หารด้วย a และ b ลงตัว ให้เพิ่มผลกำไรด้วย x หรือ y แล้วแต่จำนวนใดจะมากกว่า

  • มิฉะนั้นถ้าฉันหารด้วย a เท่านั้น ให้เพิ่มกำไรโดย 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